如何在同一个 clojurescript 设置中编写前端(试剂)和后端(express.js)应用程序?

How to write frontend (reagent) and backend (express.js) applications in a same clojurescript setup?

我可以在同一个 clojurescript 项目中编写前端(试剂)和后端(express.js)应用程序吗?

下面这两个页面。

  1. Writing Node.js applications in Clojure and using NPM packages 后端 (express.js)

  2. shadow-cljs 前端(试剂、反应)

两者相似,用npx create-cljs-project {project-name}创建一个新的cljs项目。但是,这是两个独立的项目,我可以在同一个项目中编写前后端应用程序吗,如果可以的话,这个项目中的repl如何管理?

当然,整个系统的设计目的是可以组合任意多的东西。只需在 shadow-cljs.edn :builds 映射中配置多个构建。

如果您已经拥有两个单独的项目,只需将 .cljs 文件移动到另一个即可。然后获取构建配置并将其移动到另一个 shadow-cljs.edn.

您可以从 shadow-cljs UI 或命令行控制多个构建。所有与构建相关的命令都允许您指定多个构建(例如 npx shadow-cljs watch backend frontend:frontend:backend 构建在 shadow-cljs.edn 中)。

您可以使用命名空间来正确地“分类”您的项目。对于前端相关的东西,我通常有 my.app.uimy.app.frontend 之类的东西,还有 my.app.servermy.app.backend.

之类的东西

使用两个构建的 watch 运行,您可以在编辑器中的 REPL 之间切换。在命令行中,您可以 npx shadow-cljs cljs-repl frontendnpx shadow-cljs cljs-repl backend。或者通过 npx shadow-cljs clj-repl 然后 (shadow/repl :frontend) 从 Clojure REPL 在它们之间切换。这将带您进入 :frontend 构建的 CLJS REPL。您可以通过 :cljs/quit 退出,这会将您带回 CLJ REPL。