这个ClojureScript REPL的生命周期是什么?

时间:2013-03-06 12:30:39

标签: clojure clojurescript

我试图了解ClojureScript的生命周期及其在repl中的评估。

据我所知,当我使用以下命令lein trampoline cljsbuild repl-listen开始复制时,然后当我使用以下(repl/connect "http://localhost:9000/repl")收听时 -

  1. 它创建一个侦听端口9000的TCP服务器。
  2. 浏览器会建立某种轮询,轮询任何更改。
  3. 当我在repl中执行任何代码时,会更改已编译的*.js文件。
  4. 然后将此* .js文件提供给浏览器。
  5. 浏览器将其当前* .js文件替换为新文件。
  6. 因此,在repl中执行的代码所引起的更改会显示在浏览器中。
  7. 我正在努力验证并更好地理解这一点。如果有人可以详细说明这一点,或者指出可以更好地解释它的链接,我们将不胜感激。

1 个答案:

答案 0 :(得分:4)

严格来说,javascript的执行环境不一定是浏览器,尽管“大多数”用途都是。

对于基于浏览器的执行环境:

  1. 在端口9000上创建的HTTP Server
  2. 浏览器使用HTTP Long polling连接到服务器,建立执行环境。 (这是HTTP GEThttp://server:9000/repl
  3. 当在REPL中执行代码时,clojurescript被编译为javascript,并且javascript在HTTP长轮询中作为“响应”(见下文)发送。 (注意这不是'将'js文件'提供给浏览器',而只是相关的表单)
  4. 在浏览器中评估javascript表单。
  5. 浏览器中的javascript环境现在是最新的。
  6. 最简单的方法是使用Google Chrome开发人员工具中的网络监视器监控http流量。

    注意:在HTTP长轮询设置中,请求/响应之间存在无限的混淆空间,这可能会有所帮助:

      [REPL]    -> [browser] travels via HTTP Response
      [browser] -> [REPL]    travels via HTTP Request.