27

我正在尝试为 Clojurescript 设置环境。我遇到的问题是不知道如何设置它,以便我可以从 emacs 连接到 Clojurescript 浏览器 REPL,因此我可以直接从编辑器评估表单并将其显示在浏览器中。

我尝试过的事情:

我尝试在 nREPL 上使用 Cemerick 的搭载和搭载。我真的不知道如何从文档中配置它。在弄清楚我必须在项目文件夹的根目录中创建一个 index.html 文件后,我能够让它工作。除了服务器不服务我的资产。

我尝试使用 Clojurescript wiki 中的 bash 脚本设置 lower-lisp。但是,每当我尝试运行劣质lisp程序时,我都会收到“错误的类型参数:stringp,nil”。

这是我理想的工作流程:

我有一个项目文件夹/资源/公共文件夹,其中包含我的资产和 html 文件。我可以通过 ring 或使用 python 的简单 http 服务器以某种方式启动一个为这些文件提供服务的 Web 服务器。我将能够从 emacs 连接到 REPL 并将表单评估到其中。

4

3 回答 3

20

Cemerick 再次进行救援:Austin ( https://github.com/cemerick/austin ) 正是您所追求的。

Austin 为您提供了两种选择:要么是在浏览器中评估 JS 的 REPL(“项目 REPL”),要么是更完整、集成的与浏览器连接的 REPL。听起来后者是你所追求的,你需要更努力地挖掘它的文档:https ://github.com/cemerick/austin/tree/master/browser-connected-repl-sample

为了让浏览器连接的 REPL 正常工作,Chas 的示例非常简单易懂,归结为:

  1. 添加一些中间件或模板魔术来将 JS 脚本元素附加到您的 HTML 页面,并且该脚本需要包含(cemerick.austin.repls/browser-connected-repl-js)
  2. 启动 nREPL,启动你的环服务器,然后
    (def repl-env (reset! cemerick.austin.repls/browser-repl-env (cemerick.austin/repl-env)))
    创建一个 REPL 环境。
  3. 将 nREPL 会话从 Clojure 转换为 ClojureScript REPL
    (cemerick.austin.repls/cljs-repl repl-env)
  4. 使用浏览器连接到您仍在运行的 Ring 服务器应用程序,您应该已连接。
    (.alert js/window "Hi!")应该证明。
  5. 使用标准 Emacs nREPL 命令将按预期工作,将 ClojureScript 编译成 JavaScript 并将其发送到浏览器进行评估。

Piggieback 和 Austin 之间的主要区别在于第一步和第二步:中间件使用原子添加连接回 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)))
于 2013-11-03T19:32:43.043 回答
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">
于 2013-07-30T19:18:37.773 回答
1

使用Figwheel main,设置实时重新加载、连接浏览器的 REPL 变得更加简单。Figwheel.main 会在您更改 Clojurescript 源代码时对其进行编译,并允许在浏览器中评估代码。

  1. 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"]}
    
  2. 在 中定义您的应用程序入口点dev.cljs.edn。在这里,“dev”成为构建名称。

    {:main example.core}
    
  3. src/example/core.cljs.

    (ns example.core)
    
    (let [msg "Change msg in src/example/core.cljs and see what happens!"]
      (js/alert msg))
    
  4. 启动 REPL。

    • 要使用 Emacs:
      1. M-x cider-jack-in-clojurescript
      2. 选择figwheel-main作为您的构建目标
      3. 设置:dev为您的构建名称。
    • 使用终端:
      1. 运行clojure -m figwheel.main -b dev -r-b dev设置构建,并-r在加载时启动 REPL。

有关详细信息,请参阅Figwheel 制作精良的文档

于 2018-09-27T15:04:59.560 回答