如何自动重新加载Clojure
代码?
我看过the presentation。在那里,他们使用一些热插拔Clojure技术,只要对源文件进行更改,就会重新加载代码。我可以运行代码,但我无法观察自动重载的效果。如何重新加载代码?
答案 0 :(得分:2)
(我没有完全重新观看这段视频,但这些笔记来自于我跳过视频并做出有根据的猜测后的观察结果)
从我重新观看此视频看起来,Rich正在评估正在运行的repl中的代码。这允许他更改代码,评估代码并查看不同的行为。
许多编辑都支持在Clojure repl中评估缓冲区中的代码。 Here是一些关于使用CIDER和Emacs进行交互式播放代码的文档。
如果您使用ring进行网页开发,则与相关视频无关。您可以使用wrap-reload中间件在文件发生更改并且请求到达您的Web应用程序时自动重新加载代码。这在开发Clojure Web应用程序时非常有用。
为了自动重新加载和运行你的clojure.tests,我建议lein-test-refresh。它是一个Leiningen插件,用于监视项目的文件更改,当更改内容时,它会重新加载并运行测试。如果您对项目进行了测试,则可以大大加快开发速度。
答案 1 :(得分:2)
根据具体情况,有很多方法可以重新加载代码:
watch
任务。 ..)ring.middleware.reload/wrap-reload for this
,pedestal也附带one,其他网络服务器(如yada
)也可以使用组分)答案 2 :(得分:2)
使用mount来管理组件的启动和停止。例如,在后端Web应用程序中,您可能希望在启动Web服务器之前启动数据库。
然后在emacs中你可以:
(defun cider-repl-refresh ()
(interactive)
(save-some-buffers)
(with-current-buffer (cider-current-repl-buffer)
(goto-char (point-max))
(insert (concat "(require 'clojure.tools.namespace.repl) "
"(clojure.tools.namespace.repl/refresh)"))
(cider-repl-return)))
答案 3 :(得分:0)
如果你不是非常喜欢Emacs(我喜欢Emacs,但不是每个人都这样做)LightTable也是Clojure / ClojureScript交互式编程的一个非常好的选择。
开发ClojureScript(编译为Javascript的Clojure)LightTable和Figwheel是非常好的一对。
在我看来,LightTable对于Webdev方面有一些优势可以抵御Emacs(我从未让苹果酒与ClojureScript完美配合),LightTable基本上是Chrome的专用版本,因为它建立在Electron之上。
在Figwheel GitHub页面上查看此文档:Running Figwheel with LightTable:
答案 4 :(得分:0)
如果您在IntelliJ中使用Cursive IDE,则必须安装特殊的REPL工具才能获得所需的功能。与终端窗口中的“ lein repl”相比,它具有许多功能。
此处有完整的教程:https://cursive-ide.com/userguide/repl.html
但是,很容易设置默认实例:
右键单击project.clj / deps.edn->“为...创建副本”。默认设置很好。点击确定/应用。
右键单击project.clj / deps.edn->“运行Repl for ...”(将打开一个repl窗口)
请参阅“工具”->“ Repl”以获取命令列表,例如:
此外,在编写REPL时,您还将获得完整的代码完成,语法高亮显示等。