2

我正在开发我的第一个全栈 Clojure 应用程序。我已经设法在 Linux Mint 中正常工作:

  • 莱宁根
  • figwheel + garden[auto] = 带有热代码和 CSS 重载的交互式 SPA 开发
  • leiningen REPL for Server with rebel-readline,在 REPL 启动服务器,并将 SPA 提供给浏览器
  • leiningen uberjar 编译,jar 文件运行,SPA 由服务器服务

我不知道该怎么做是设置一个开发环境,允许我同时拥有一个服务器 REPL 和一个 SPA REPL,这样我就可以集成 sente 以支持 websocket 并监控重新构建应用程序- SPA REPL 中的数据库状态。我想,理想情况下,我想让 figwheel + gargen[auto] 与 SPA 一起运行,通过 sente websocket 与服务器通信。

4

2 回答 2

0

事实证明,在 ClojureScript 应用程序中使用的名为 make-channel-socket! 的 sente 函数被调用以启动与运行在应用程序服务器上的 sente-websocket-server 的连接,它具有第三个参数,选项映射,键名为:主持人。默认情况下,sente 将 :host 值设置为加载 ClojureScript 应用程序的服务器。

如果运行 'lein figwheel' 并通过 figwheel 服务器加载 ClojureScript 应用程序,则默认情况下,sente 会尝试连接到 figwheel 服务器,当然,这不是运行 sente websocket 服务器。

对于开发模式,必须: 1. 在终端中启动应用服务器(例如,'lein repl') 2. 使用 :host 值为 'localhost:' 编译 ClojureScript 应用 3. 在另一个中通过 figwheel 运行 ClojureScript 应用终端 4. 从浏览器连接到 figwheel 服务器(例如,'localhost:3449')

当 ClojureScript 应用程序通过 figwheel 服务器加载到浏览器中时,它会执行 sente 连接调用,该调用现在与运行在应用程序服务器中的 sente websocket 服务器建立连接。

这是太棒了!现在可以使用 figwheel 及其 REPL 用于浏览器,并同时运行应用服务器及其 REPL。

于 2019-01-29T22:49:40.863 回答
0

我的回答并不是您真正要求的,但您可能会感兴趣,但我相信请耐心等待。

您是否尝试过lightmod编辑器?它旨在成为具有最少设置的全栈编辑器。事实上,当你启动它时,你可以为你的项目预选模板,并自动为后端获取一个 REPL,为你的 SPA 获取一个 REPL,自动重新加载等。它没有 Emacs 的所有好东西,但我发现它真的很好快速设置。

于 2019-01-29T18:09:50.480 回答