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

欢迎!请查阅关于页面了解更多关于此功能的信息。

0
ClojureScript
Clojure Socket REPL共享评估环境。

例如,启动的方式为


java -Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}" -cp cljs.jar clojure.main


然后在其中一个终端


$ telnet 0 5555
正在尝试... 0.0.0.0...
连接到localhost。
退出字符是'^]'。
user=> (def x 3)
#'user/x


然后如果您进入另一个终端


$ telnet 0 5555
正在尝试... 0.0.0.0...
连接到localhost。
退出字符是'^]'。
user=> x
3


并在启动socket REPL的原始终端


user=> x
3



以下是使用Node Socket REPL得到的结果(不确定我是否正确启动了它)


java -Dclojure.server.repl="{:port 5555 :accept cljs.server.node/repl}" -cp cljs.jar clojure.main


第一个终端


$ telnet 0 5555
正在尝试... 0.0.0.0...
连接到localhost。
退出字符是'^]'。
ClojureScript 1.10.160
cljs.user=> (def x 3)
#'cljs.user/x



第二个终端


$ telnet 0 5555
正在尝试... 0.0.0.0...
连接到localhost。
退出字符是'^]'。
ClojureScript 1.10.160
cljs.user=> x
WARNING: 在第1行 <cljs repl> 使用了未声明的Var cljs.user/x
nil

2 答案

0

评论由:dnolen

为了澄清,ClojureScript Socket REPL必须逐个设置才能按这种方式工作。目前只有{{cljs.server.browser}}按这种方式工作。其他需要调整。这项工作的主要目标是使{{-setup}}和{{-teardown}}具有幂等性和线程安全。另一部分是确保输出被正确引导。浏览器REPL目前表现出此错误https://dev.clojure.org/jira/browse/CLJS-2643

0
参考资料:https://clojure.atlassian.net/browse/CLJS-2655(由mfikes报告)
...