2013-03-06 42 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

    相關問題