请在 2024 Clojure现状调查 中分享您的想法!

欢迎!请参阅 关于 页面获取有关如何操作的一些更多信息。

+11

如果您需要从零开始创建一个新的项目(Web应用),您会使用什么栈?(后端、前端以及所有中间部分)。

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

7 答案

+11

编辑

fulcro3[1] + crux[2]

Both fulcro3 and 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

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提供了良好的Swagger支持。http-kit给我提供了一个仅支持Clojure的HTML客户端/服务器,我很喜欢。

+2
by

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 一起工作的 port(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

...