LightTable 中的文档似乎很少。我想在 LightTable 中创建一个非常简单的 ClojureScript Web 应用程序作为构建的起点。我让 Clojure 中的 Instarepl 工作正常,然后我创建了一个名为 dummy.cljs 的新文件,其中包含以下内容:
(ns dummy)
(js/alert "Hello lighttable")
我怎么能运行这个?
更新
我现在已经想通了,我将发布一个视频来介绍如何做,因为它非常直观。
更新 2
这是视频:
LightTable 中的文档似乎很少。我想在 LightTable 中创建一个非常简单的 ClojureScript Web 应用程序作为构建的起点。我让 Clojure 中的 Instarepl 工作正常,然后我创建了一个名为 dummy.cljs 的新文件,其中包含以下内容:
(ns dummy)
(js/alert "Hello lighttable")
我怎么能运行这个?
我现在已经想通了,我将发布一个视频来介绍如何做,因为它非常直观。
这是视频:
lein ring server
,lein cljsbuild auto
以便使用 clojurescript 自动编译运行本地 Web 服务器更简单的方法是使用http://clojurescriptone.com/和 lein repl 作为主要开发工具,并仅使用 LT 作为解决一两个文件中的一些小问题的附加工具。
嗯,LightTable 在开发阶段作为 REPL 很好,但是当你完成后,你需要编译 ClojureScript 来执行(即,使用 node.js)。
然后,您可以给出 ClojureScript 表达式,并使用 command-enter 或 shift-command-enter 键(使用 Mac OS X)对其进行评估。
最简单的方法是使用 lein,但如果您不想使用 lein,这是可能的方法之一。
或下载更新的版本(如果有)。
└── src
├── build.clj
└── smcho
└── core.cljs
build.clj 如下,您可以根据需要更改命名空间和相应的目录名称。
(require 'cljs.build.api)
(cljs.build.api/build "src"
{:main 'smcho.core
:output-to "main.js"
:target :nodejs})
这是 ClojureScript 代码;主要方法已添加。
(ns smcho.core
(:require [cljs.nodejs :as nodejs]))
(nodejs/enable-util-print!)
(defn factorial [x]
(reduce * (range 1 (inc x))))
(defn fib [n]
(if (<= n 1)
1
(+ (fib (- n 1)) (fib (- n 2)))))
(defn sort-seq []
(sort (repeat 100 (rand-int 2000))))
(defn time-fun [fun]
(let [start (.getTime (js/Date.))
_ (fun)
end (.getTime (js/Date.))
result (- end start)]
result))
(defn time-it [fun]
(let [values (for [i (range 200)] (time-fun fun))]
(/ (apply + values)
(count values))))
(defn -main []
(println "(factorial 5000) \t Avg: " (time-it #(factorial 5000)))
(println "(fib 20) \t Avg: " (time-it #(fib 20)))
(println "(sort-seq) \t Avg: " (time-it #(sort-seq))))
(set! *main-cli-fn* -main)
java -cp cljs.jar:src clojure.main src/build.clj
node main.js
这将显示执行结果。
(factorial 5000) Avg: 0.65
(fib 20) Avg: 0.135
(sort-seq) Avg: 0.135
示例代码复制自http://blog.gonzih.me/blog/2013/01/23/clojurescript-on-beaglebone-simple-benchmark-with-node-dot-js/。
要将 light table 与 clojurescript 一起使用,与 clojure 项目的一个区别是:
如果我将某些页面与浏览器(内部或外部)连接,我需要
在终端中运行:
lein cljsbuild auto 。
否则找不到goog相关的js。
您可以从这里查看:
https ://groups.google.com/forum/#!topic/light-table-discussion/fJBLMzmZSWw