簡體   English   中英

此ClojureScript REPL的生命周期是什么?

[英]What is the lifecycle of this ClojureScript REPL?

我試圖了解ClojureScript的生命周期及其對repl的評估。

據我了解,當我使用以下命令開始repl時, lein trampoline cljsbuild repl-listen ,然后當我使用以下命令lein trampoline cljsbuild repl-listen(repl/connect "http://localhost:9000/repl") -

  1. 它創建一個偵聽端口9000的TCP服務器。
  2. 瀏覽器建立某種輪詢,在該輪詢中進行任何更改。
  3. 當我在repl中執行任何代碼時,這將更改已編譯的*.js文件。
  4. 然后,此* .js文件將提供給瀏覽器。
  5. 瀏覽器用新文件替換其當前的* .js文件。
  6. 因此,由於在repl中執行的代碼而導致的更改將顯示在瀏覽器中。

我試圖更好地驗證和理解這一點。 如果有人可以詳細說明或將我指向可以更好地解釋它的鏈接,將不勝感激。

嚴格來說,盡管“大多數”用途是,但javascript的執行環境不必是瀏覽器。

對於基於瀏覽器的執行環境:

  1. 在端口9000上創建的HTTP Server
  2. 瀏覽器使用HTTP Long polling連接到服務器,建立執行環境。 (這是到http://server:9000/repl的HTTP GET
  3. 在REPL中執行代碼時,clojurescript會編譯為javascript,並且在HTTP長輪詢中將javascript作為“響應”(請參見下文)發送。 (請注意,這並不是將js文件“提供”給瀏覽器”,而只是相關的表單)
  4. JavaScript表單在瀏覽器中進行評估。
  5. 瀏覽器中的javascript環境現在是最新的。

最簡單的方法是使用google chrome開發人員工具中的網絡監視器等工具監視http流量。

注意:在HTTP長輪詢設置中,請求/響應之間存在無限的混淆范圍,這可能會有所幫助:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM