2013-03-06 43 views
2

我想了解ClojureScript的生命周期及其在repl中的评估。这个ClojureScript REPL的生命周期是什么?

据我了解,当我开始一个REPL使用下面的命令lein trampoline cljsbuild repl-listen,然后当我听使用以下(repl/connect "http://localhost:9000/repl") -

  1. 它创建侦听端口9000
  2. 浏览器建立一个TCP服务器某种轮询方式,它在轮询任何更改。
  3. 当我在repl中执行任何代码时,这会更改已编译的*.js文件。
  4. 然后将此* .js文件提供给浏览器。
  5. 浏览器用新的替换当前的* .js文件。
  6. 因此,由repl中执行的代码引起的更改显示在浏览器中。

我想更好地验证和理解这一点。如果有人能详细说明这一点,或者指出我可以更好地解释它的链接,我们将不胜感激。

回答

4

严格来说,JavaScript的执行环境不一定是浏览器,尽管“最”的用途是。

对于一个基于浏览器的执行环境:在端口9000

  • 浏览器连接服务器使用HTTP Long polling,建立一个执行环境创建

    1. HTTP服务器。 (这是一个HTTP GEThttp://server:9000/repl
    2. 当在REPL中执行代码时,clojurescript被编译为javascript,并且JavaScript在HTTP长轮询中作为'响应'(见下文)发送。 (请注意,这不是'将'js文件提供给浏览器',而只是相关的表单)
    3. JavaScript表单在浏览器中进行评估。
    4. 浏览器中的JavaScript环境现在是最新的。

    最简单的方法是使用类似谷歌浏览器开发工具中的网络监视器来监视http流量。

    注:有一个HTTP长轮询设置请求/响应之间的混乱不已范围,这可能帮助:

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

    感谢,这是非常有帮助! – murtaza52 2013-03-07 02:35:10

    相关问题