欢迎!请查看关于页面以了解更多关于如何操作的信息。
如果你要从零开始创建一个新项目(web应用),你会选择什么堆栈?(后端,前端,以及之间的所有内容)。
最初的问题是在这里提出的:https://twitter.com/JacekSchae/status/1155852483270459392
fulcro3[1] + crux[2]
fulcro3
crux
《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
react native
我会使用 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 客户端/服务器,我很喜欢。
reagent、re-frame、spec、bidi、ring、netty、aleph
我更新了我的回答,因为我添加了功能。
我在前端使用hoplon,使用Chord进行RPC与后端连接,通过REST接口连接到CouchBD。
我有一个基于figwheel-main的300行CLI工具和项目,这是我开始的起点。 https://github.com/rpompen/mkproj-demo
它是由以下shell脚本生成的 https://github.com/rpompen/mkproj
我尽量保持简单来开始。它提供了一个CouchDB后端的CRUD示例。
前端:Reagent+Reframe后端:Pedestal数据库:Datomic Cloud
在我的当前项目中,我使用了
服务器有两个图形API端点 /api 是读写 EQL [1],由 Pathom 解析器处理 /grapqhl 是只读 GraphQL,由 Lacinia 解析器处理它们都来自单个 EDN 定义自动生成。
/api
/grapqhl
尽管 Lacinia 在使 Clojure 中 GraphQL 变得简单方面很出色,但我更享受通过 Fulcro 和 Pathom 使用 EQL API 的工作。
[1] https://edn-query-language.org/eql/1.0.0/what-is-eql.html