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

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

+11

如果要从零开始(本体在#Clojure)构建一个新的项目(Web应用),你会选择什么样的开发栈?(后端、前端和中间的一切)。

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

7 个答案

+11

编辑

fulcro3[1] + crux[2]

由于fulcro3crux目前处于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组件,我会在客户端使用ClojureScript和RUM配合React。

我可能会尝试使用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

为了开始,我将保持一切尽可能简单。它提供了一个 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

...