2024年度Clojure调查中分享你的想法!

欢迎!请查看关于页面,了解更多关于这个网站的信息。

+11
Libs

如果你必须从头开始一个新的项目(Web应用),你会选择什么栈?(后端,前端,以及中间的一切)。

最初的问题在这里被提出:https://twitter.com/JacekSchae/status/1155852483270459392

7个回答

+11

编辑

fulcro3[1] + crux[2]

目前,《code>fulcro3和crux都是alpha版本,所以与标准的re-frame + postgres应用程序相比,它肯定是一个具有风险的选择,但我就喜欢它们背后的宏伟构想。

这是一个基本以数据驱动,支持时光旅行功能的CQRS全栈,一旦这项技术成熟,将承诺前所未有的生产力。

Fulcro是我最初被Clojure吸引的原因。在其他任何语言中都难以构建它 - JS世界尝试过Apollo或Meteor,但就个人而言,我认为Fulcro做出了更好的设计决策(选择Clojurescript只是其中之一)。

[1] http://fulcro.fulcrologic.com/
[2] https://juxt.pro/crux/index.html
[3] https://github.com/souenzzo/graph-demo 支持React Native的示例

Fulcro3仍然处于alpha版本,而Fulcro 2不是。后者已经存在多年,并不比re-frame风险更高。
+3

我会使用RUM进行HTML模板和渲染,因为它支持良好的服务器端渲染,可以稍后与React组件连接,或者简单地回到纯HTML,从而在Clojure和ClojureScript中工作。

如果需要,我会使用ClojureScript和RUM在客户端使用React进行更复杂的JS组件。

我可能尝试使用Datomic Cloud作为我的服务器端持久状态和Datascript作为我的客户端临时状态。

我觉得我可以试试reitit进行路由和http-kit作为我的HTML客户端/服务器。感觉reitit的速度可能值得,它现在也支持ring和pedestal,还有很好的Clojure Spec支持Swagger。http-kit给我了一个只有Clojure的HTML客户端/服务器,我很喜欢。

+2

reagent, re-frame, spec, bidi, ring, netty, aleph

+1

编辑

我更新了我的回答,因为我增加了功能。

我在前端使用hoplon,使用Chord进行RPC后端通信。通过REST接口连接到CouchDB。

我有一个基于figwheel-main的300行CLI工具和项目,并从这里开始
https://github.com/rpompen/mkproj-demo

它是由以下shell脚本生成的
https://github.com/rpompen/mkproj

我一开始就使事情尽可能简单。它提供了一个CouchDB后端的CRUD示例。

0

在前端,我实验过hx,并真正喜欢了一些现代React API(特别是hooks)。对于状态管理,我一直喜欢re-frame,所以我开始了一个适用于hx的版本(hx-frame - 非常早期阶段,支持大多数re-frame API - 不支持订阅信号函数以及re-frame中的大部分日志记录,所以至少可以称得上是一个实验)。在服务器端,我一直在实验AWS和新兴的无服务器模式。所以这正是我所做的事情,但这肯定还处于实验阶段。

0

前端:Reagent+Reframe
后端:Pedestal
数据库:Datomic Cloud

0

我当前的 项目正在使用

  • Fulcro 3
  • Pathom
  • Datomic
  • Pedestal
  • Lacinia
  • Deps.edn
  • Shadow-CLJS

服务器有两个图形API端点
/api 是读写 EQL [1],由 Pathom 解析器处理
/grapqhl 是只读 GraphQL,由 Lacinia 解析器处理
这两个都是从单个 EDN 定义自动生成的。

虽然 Lacinia 使得在 Clojure 中使用 GraphQL 变得很容易,但我更喜欢通过 Fulcro 和 Pathom 使用 EQL API 来工作。

[1] https://edn-query-language.org/eql/1.0.0/what-is-eql.html

...