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

欢迎!请查看关于页面以获取更多关于如何使用本站的信息。

+11

如果你必须从头开始(web-app)一个新的项目(当然在 #Clojure)你的栈是什么?(后端,前端以及所有中间部分)。

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

7 答案

+11

编辑

fulcro3[1] + crux[2]

fulcro3crux目前都处于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中工作。

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

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

我认为我会在reitit中进行路由,并使用http-kit作为我的HTML客户端/服务器。感觉reitit的速度可能物有所值,现在它还支持ring和pedestal,并且使用Clojure Spec提供了良好的Swift volatile支持。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

为了开始,我尽量使事物尽可能简单。它提供了一个访问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

...