gpt4 book ai didi

emacs - clojurescript中浏览器Repl、浏览器、http服务器之间的交互

转载 作者:行者123 更新时间:2023-12-03 15:49:43 28 4
gpt4 key购买 nike

我一直在研究 clojurescriptone - 精巧的项目 - 以尝试理解 clojurescript 的工作原理。我不清楚浏览器、浏览器 repl 和 http 服务器这三个组件是如何交互的。

我的开发环境使用emacs

为了更好地理解 ClojureScript(CS),我决定尝试移植 clojurescriptone(CS1) 以使用 lein2 并使用 nrepl 作为我的 repl。该端口确实有效,我能够让 CS1 环境运行并与浏览器交互。我更喜欢 - 现在 - 不要启动劣质的 lisp 进程来使用 CS repl,而是在 clojure repl 中运行 CS repl。唯一的缺点是 CS repl 从 stdin 获取输入,而 emacs 提示我使用 stdin。为了解决这个问题,我试图替换 CS1 中的一些代码,以便它从 Chas Emerick 编写的 piggieback 库启动 repl。

在这样做的过程中,我对这些组件如何交互的理解已经达到了极限。显然,据我所知,浏览器 repl 是一个监听某个端口的“服务器”;虽然一直以来我都认为这是某种客户端向 http 服务器发送请求并在评估结果后将输出重定向到浏览器(如何??)。现在我不确定情况是否如此。

这些组件如何交互?

抱歉解释太长了!!!

希德

最佳答案

浏览器 REPL 有服务器端和客户端。服务器端在您的 Clojure 主进程中运行; ClojureScript REPL 它自己实际上在 bREPL 服务器中运行。

bREPL 客户端 在浏览器的 ClojureScript 中运行,并维护与服务器的长轮询 AJAX 连接。每当您在服务器上的 REPL 中输入内容时,它都会被编译为 JavaScript 并通过长轮询机制发送到客户端,在客户端对其进行评估并发回响应。

服务器的 ClojureScript REPL 在您的普通 Clojure REPL“内部”运行——具体的工作机制取决于您使用的是哪个 REPL。 nREPL 本身在客户端-服务器架构上运行,因此很容易看出事情是如何变得困惑的。

这有什么帮助吗?

关于emacs - clojurescript中浏览器Repl、浏览器、http服务器之间的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12583132/

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