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

欢迎!请在关于 页面获取更多关于该功能的信息。

+11

如果你必须从头开始一个新的项目(Web 应用程序),(自然地,在 #Clojure)你的堆栈会是什么?(后端、前端以及所有中间部分)。

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

7 个答案

+11

编辑

fulcro3[1] + crux[2]

这两个工具目前都是 alpha 版本,所以相比于标准的 re-frame + postgres 应用程序,这绝对是一个有风险的选项,但我非常喜欢它们背后的雄心壮志。

它基本上是一个数据驱动的、时间旅行支持的 CQRS 全堆栈,一旦这项技术成熟,它承诺将提供前所未有的生产力。

Fulcro 是最初吸引我进入 Clojure 的东西。在除 ClojureScript 以外的任何语言中构建它都将是极其困难的——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

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

我会使用RUM进行HTML模板和渲染,因为它对服务器端渲染有良好的支持,可以后来连接到React组件,或简单地回退到普通HTML,因此可以在Clojure和ClojureScript中工作。

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

我会尝试使用Datomic Cloud用于服务器端持久化状态,以及Datascript用于客户端临时状态。

我可能还会尝试使用reitit进行路由,以及http-kit作为我的HTML客户端/服务器。觉得reitit的速度可能值得考虑,它现在支持ring和pedestal,并且对Clojure Spec的使用有良好的支持。http-kit为我提供了一个只使用Clojure的HTML客户端/服务器,我很喜欢。

+2
by

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

+1

编辑了

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

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

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

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

我开始时尽量简单化。它提供了一个CRUD示例到CouchDB后端。

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

...