[英]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.