簡體   English   中英

啟動ClojureScript瀏覽器REPL

[英]Starting the ClojureScript browser REPL

我正在嘗試在瀏覽器中啟動ClojureScript REPL。 理想情況下我還不想使用Austin:我首先想要讓最簡單的REPL工作。

我嘗試了各種教程,到目前為止我沒有設法讓它工作。 基本上我不明白人們說:“啟動ClojureScript瀏覽器REPL”時的含義。

到目前為止我做了:

lein new mies hellow

和:

lein cljsbuild auto hellow

這是我的core.js文件:

(ns hellow.core
  (:require [clojure.browser.repl :as repl]))

(enable-console-print!)

(println "Hello world!")    
(. js/console (log "Hello again"))    
(repl/connect "http://localhost:9000/repl")    
(. js/console (log "Ah, this prints too"))

當我打開index.html (調用core.js)時,我可以在Chrome的開發人員工具的JavaScript控制台中看到所有內容都已正確記錄。

然而(repl/connect ...)顯然失敗了。 這是Chrome的開發者工具所展示的內容;

Failed to load resource http://localhost:9000/repl?xpc=%7B%22cn%22%...

在幾乎所有關於ClojureScript的論壇帖子/博客文章/教程中我都讀過這個主題,我偶然發現了一句話: “啟動瀏覽器REPL”或類似內容。

如何啟動瀏覽器REPL? 這是從瀏覽器加載index.html 之前必須完成的事情嗎?

我可以從Emacs啟動這個瀏覽器REPL嗎?

如何在不加載index.html / core.js的情況下測試瀏覽器REPL是否正常工作?

在瀏覽器中加載index.html / core.js之后,如何驗證core.js內部的(repl / connect ...) 是否正常工作並且實際連接到REPL?

啟動repl服務器(您已經包含客戶端代碼)的最簡單和最基本的方法就是這樣做

$ lein trampoline cljsbuild repl-listen
Running ClojureScript REPL, listening on port 9000.
To quit, type: :cljs/quit
ClojureScript:cljs.user>

此時,如果您嘗試eval任何表達式(+ 1 2)例如(+ 1 2) ,您將看到repl掛起,因為它沒有eval的環境。

當你去index.html時( 記得從web服務器提供服務,或者連接失敗 ,不要使用file:/// urls)並在瀏覽器上打開它。

http://localhost:9000/repl?xpc=...應該可以正常工作,並且repl應該解鎖並打印3 從那時起,任何命令都將在瀏覽器環境中執行。

我喜歡嘗試(js/alert "hi")來查看repl是否已連接,如果它工作,它將在瀏覽器窗口中alert

請記住,瀏覽器窗口是您的執行環境,因此如果您刷新它,您將丟失運行時值,如果您不再次定義它們,則無法從repl訪問它們。

使用cljsbuild還有:( lein cljsbuild help

repl-listen
  Run a REPL that will listen for incoming connections. (the one I used above)
repl-launch
  Run a REPL and launch a custom command to connect to it.
repl-rhino
  Run a Rhino-based REPL (JVM based JS execution environment, no browser needed).

此外,對於准系統repl,將它與rlwrap一起使用以獲取readline快捷方式(Ctrl + a等)和repl歷史記錄以及其他內容非常有用:

$ rlwrap lein trampoline cljsbuild repl-listen

我希望這一切都有所幫助。

暫無
暫無

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

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