2014-09-21 135 views
3

我想在瀏覽器中啓動ClojureScript REPL。理想情況下,我不想使用奧斯汀:我首先想獲得最簡單的REPL可能的工作。啓動ClojureScript瀏覽器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嗎?

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

我怎樣才能然後確認,之後的index.html/core.js被加載到瀏覽器中,該(REPL /連接...)core.js所做的工作和實際連接到REPL?

+0

檢查花輪和栗子。這些將使瀏覽器更容易啓動 – zach 2014-11-19 22:51:34

回答

5

啓動REPL服務器(你已經有包括客戶端代碼)的最簡單和最基本的方法是做

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

在這一點上,如果你試圖EVAL像(+ 1 2)例如任何表情,你會看到repl掛起,因爲它沒有環境評估。

當你去到您的index.html這是(記得從Web服務器使用,或連接失敗,不使用file:/// URL)和打開它在瀏覽器上。

http://localhost:9000/repl?xpc=...的連接應該可以正常工作,並且repl應該取消阻止並打印3。從此,任何命令都將在瀏覽器環境中執行。

我喜歡嘗試(js/alert "hi")以查看repl是否連接,如果有效,它將在瀏覽器窗口中顯示alert hi。

請記住,瀏覽器窗口是您的執行環境,所以如果刷新它,您將失去運行時值,如果您沒有再次定義它們,將無法從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 

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