天天看点

(cljs/run-at (JSVM. :browser) "搭建刚好可用的开发环境!")

 书接上一回,在了解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) "命名空间就这么简单")