我正在尝试为Clojurescript设置一个环境。我遇到的问题是不知道如何设置它以便我可以从emacs连接到Clojurescript Browser REPL,因此我可以直接从编辑器评估表单并将其显示在浏览器中。
我尝试过的事情:
我尝试使用Cemerick的piggieback并捎带nREPL。我真的不知道如何从文档中配置它。在弄清楚我必须在项目文件夹的根目录中创建一个index.html文件后,我才能使它工作。除了服务器不提供我的资产。
我尝试使用Clojurescript wiki中的bash脚本设置inferior-lisp。但是,每当我尝试运行劣质lisp程序时,我都会遇到“错误的类型参数:stringp,nil”。
这是我理想的工作流程:
我有一个项目文件夹/ resources / public文件夹,其中包含我的资产和html文件。我可以通过响铃或使用python的简单http服务器启动一个以某种方式提供这些文件的Web服务器。我可以从emacs连接到REPL并将表单评估到其中。
答案 0 :(得分:20)
Cemerick再次拯救:奥斯汀(https://github.com/cemerick/austin)正是你所追求的。
Austin为您提供了两个选项:在浏览器中评估JS的REPL(“项目REPL”),或者更完整,集成的浏览器连接的REPL。听起来后者就是你所追求的,你需要更加努力地挖掘它的文档:https://github.com/cemerick/austin/tree/master/browser-connected-repl-sample
为了让浏览器连接的REPL正常工作,Chas的例子非常简单,可归结为:
(cemerick.austin.repls/browser-connected-repl-js)
的输出(def repl-env (reset! cemerick.austin.repls/browser-repl-env (cemerick.austin/repl-env)))
(cemerick.austin.repls/cljs-repl repl-env)
(.alert js/window "Hi!")
应证明这一点。Piggieback和Austin之间的主要区别在于第一步和第二步:中间件使用atom来添加连接回nREPL的内联JavaScript块。由于HTTP URL是在运行时确定的,因此Ring服务器和客户端JavaScript需要协同工作。
FWIW我在user
命名空间中创建了一个函数来加速连接CLJS REPL:
(defn cljs-browser-repl
"Fire up a browser-connected ClojureScript REPL"
[]
(let [repl-env (reset! cemerick.austin.repls/browser-repl-env
(cemerick.austin/repl-env))]
(cemerick.austin.repls/cljs-repl repl-env)))
答案 1 :(得分:2)
在按照https://github.com/clojure/clojurescript/wiki/Quick-Start
上的教程后,我遇到了类似的问题帮助我的是最后一个建议 https://groups.google.com/forum/#!topic/clojure/_JWvqc3fENQ
使用
替换index.html中的元标记<meta content="text/html;charset=UTF-8" http-equiv="content-type">
答案 2 :(得分:1)
使用Figwheel main,设置实时重新加载,连接浏览器的REPL变得更加简单。 Figwheel.main会在您更改Clojurescript源时对其进行编译,并允许在浏览器中评估代码。
在deps.edn
中定义依赖项。 :paths
指定用于查找源代码的文件夹。
{:deps {org.clojure/clojure {:mvn/version "1.9.0"}
org.clojure/clojurescript {:mvn/version "1.10.339"}
com.bhauman/figwheel-main {:mvn/version "0.1.9"}}
:paths ["src"]}
在dev.cljs.edn
中定义您的应用程序入口点。在这里,“ dev”成为构建名称。
{:main example.core}
在src/example/core.cljs
中创建一些ClojureScript代码。
(ns example.core)
(let [msg "Change msg in src/example/core.cljs and see what happens!"]
(js/alert msg))
启动REPL。
M-x cider-jack-in-clojurescript
figwheel-main
作为构建目标:dev
设置为您的内部版本名称。clojure -m figwheel.main -b dev -r
。 -b dev
设置构建,-r
在加载时启动REPL。有关更多信息,请参阅Figwheel's well-made documentation。