書接上一回,在了解cljs基本文法後并在clojurescript.net的奇特錯誤提示後,我們必須痛定思痛地搭建一個本地的開發環境,以便後續深入地學習cljs。
由于浏覽器僅能運作js,而無法直接運作cljs,是以我們需要搭建一個預編譯環境将cljs編譯成js後再在浏覽器中運作。預編譯無非就是jvm和nodejs兩個環境,但具體使用時有如下幾種建構工具。
直接jvm編譯
lein方案
boot方案
lumo方案
shadow-cljs方案
cljs/tool方案
其中lein和boot都是基于jvm編譯環境,隻是上層的建構方式有所不同,而lein除了用于建構cljs外還用于建構clj;而boot則專注于建構cljs。
lumo則是基于nodejs編譯環境。
shadow-cljs則是node-jre,就是用node子產品管理的jvm。
由于我們隻需搭建一個剛好可用的開發環境即可,是以下面隻介紹方案1。
jdk8.0+
<a href="https://github.com/clojure/clojurescript/releases/latest">clojurescript 獨立jar</a>
在<code>build.clj</code>檔案中輸入
在<code>src/hello_world/core.cljs</code>檔案中輸入
在<code>index.html</code>檔案中輸入
現在到了最激動人心的一刻了!編譯君!在shell中執行
然後打開浏覽器通路index.html就可以在console中看到那句熟悉的hello world!了。
現在每次修改代碼後均要編譯一下,要知道啟動clojure是那麼的漫長,是以我新增watch.clj的配置,讓它監控src檔案的變化來實作自動編譯吧!
然後運作
就會自動編譯了,是不是舒心多了!等等,還不夠。對于快速開發而言,我們還需要一個repl!
首先安裝個rlwrap,後面會用到!
新增repl.clj檔案
修改<code>src/hello_world/core.cljs</code>檔案
然後打開浏覽器通路<code>http://localhost:9000/</code>,這時浏覽器通路的是index.html頁面,然後我們按<code>f12</code>打開浏覽器的console,那麼shell中就會有我們心儀已久的repl了!
這時我們在core.cljs中追加下面代碼
然後在repl中加載這個命名空間
然後再将add改成multi
然後在repl中重新加載這個命名空間
現在我們可以繼續深入cljs的學習咯!!!
開發環境搭建好了,那接下來要從哪裡入手呢?大家是不是對<code>(require '[cljs.repl :refer [repl]])</code>和<code>(require '[cljs.repl :as repl])</code>等有些疑惑呢?後面我們就從命名空間開始吧!(cljs/run-at (jsvm. :browser) "命名空間就這麼簡單")