gpt4 book ai didi

read-eval-print-loop - 如何使用 emacs 设置 Clojurescript REPL?

转载 作者:行者123 更新时间:2023-12-03 10:28:36 25 4
gpt4 key购买 nike

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

我尝试过的事情:

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

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

这是我理想的工作流程:

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

最佳答案

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

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

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

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

  • Piggieback 和 Austin 之间的主要区别在于第一步和第二步:中间件使用原子添加连接回 nREPL 的内联 JavaScript block 。由于 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)))

    关于read-eval-print-loop - 如何使用 emacs 设置 Clojurescript REPL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17714106/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com