clojure - 在页面上包含浏览器 REPL 的正确方法是什么,但仅在开发中?

标签 clojure clojurescript

我正在使用 Austin设置浏览器连接的 REPL,并按照其 sample project 的示例,它使用 Enlive 将 REPL 脚本添加到页面。

现在我想部署我的应用程序,但我不希望 Austin 或我的 REPL 出现在生产页面上。仅在开发中使用 REPL 的预期方式是什么?

有没有办法将 Enlive 用作我可以在开发中而不是在生产中使用的中间件?

最佳答案

生产环境与 :dev 几乎总是有一些独特的区别。可以用作条件:if in :dev ,注入(inject)(browser-connected-repl-js)的结果;如果没有,不要。

如果您的部署环境没有这样的属性,我建议添加一个,因为这种“仅在环境 X 中”用例在很多事情中都很常见。

另一方面,如果您希望避免在面向生产的构建中完全包含 Austin 及其依赖项,而无需更改任何使用 browser-connected-repl-js 的代码。 ,一种解决方案可能是简单地虚拟化相关的 Austin 命名空间,例如:

(ns cemerick.austin.repls)

(defn browser-connected-repl-js [& _] "")

把它放在 cemerick/austin/repls.clj在您的project.clj 中包含的目录中的非:dev简介:source-paths .现在,您的代码将在没有 Austin 及其依赖项的情况下部署到生产环境,并且您的代码将透明地调用上述虚拟函数(不向您的页面注入(inject)任何内容)。

关于clojure - 在页面上包含浏览器 REPL 的正确方法是什么,但仅在开发中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25859447/

相关文章:

Clojure : type hint tower

macros - leiningen defproject 宏的解释/文档

Clojurescript 数组映射顺序

heroku - 如何将试剂前端部署到 Heroku?

clojurescript - “figwheel”不是任务

clojure - 如何在查看 Clojure 代码时识别哪些表单是宏,哪些是函数?

clojure - core.async 中的 mult 与广播

Clojure:简洁地转发可选值

functional-programming - 用于进度报告的惯用 clojure?

clojure - 如何在 clojurescript 中写入文件?