15

LightTable 中的文档似乎很少。我想在 LightTable 中创建一个非常简单的 ClojureScript Web 应用程序作为构建的起点。我让 Clojure 中的 Instarepl 工作正常,然后我创建了一个名为 dummy.cljs 的新文件,其中包含以下内容:

(ns dummy)

(js/alert "Hello lighttable")

我怎么能运行这个?

更新

我现在已经想通了,我将发布一个视频来介绍如何做,因为它非常直观。

更新 2

这是视频:

http://www.youtube.com/watch?v=GZ6e0tKqYas

4

3 回答 3

14
  1. 您应该首先通过 lein ( https://github.com/technomancy/leiningen ) 创建一个项目,如此所述
  2. 然后将 cljsbuild 添加到您的项目中,如此处所述
  3. 同时从终端(或 win 上的 cmd)运行lein ring serverlein cljsbuild auto以便使用 clojurescript 自动编译运行本地 Web 服务器
  4. 将 LightTable(通过底部的控制台)连接到您在步骤 1 中创建的项目
  5. 现在您可以在 LightTable 中编辑 clojure 和 cljs 并且更改应该传送到您的浏览器。但是不要忘记检查终端是否有错误,因为它们可能不会在 LT 中显示。

更简单的方法是使用http://clojurescriptone.com/和 lein repl 作为主要开发工具,并仅使用 LT 作为解决一两个文件中的一些小问题的附加工具。

于 2013-01-07T22:05:41.787 回答
3

嗯,LightTable 在开发阶段作为 REPL 很好,但是当你完成后,你需要编译 ClojureScript 来执行(即,使用 node.js)。

LightTable 的设置

  1. 打开一个带有 cljs 扩展名的 clojurescript 文件。
  2. 单击控制空间
  3. 选择连接:添加连接,然后选择 LightTable

在此处输入图像描述

在此处输入图像描述

然后,您可以给出 ClojureScript 表达式,并使用 command-enter 或 shift-command-enter 键(使用 Mac OS X)对其进行评估。

在此处输入图像描述

node.js 的设置

最简单的方法是使用 lein,但如果您不想使用 lein,这是可能的方法之一。

Step1:下载cljs.jar编译器

或下载更新的版本(如果有)。

Step2:创建源目录并创建文件

└── 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)

Step3:构建获取main.js脚本。

java -cp cljs.jar:src clojure.main src/build.clj

第四步:运行node.js

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/

于 2015-10-28T01:36:40.560 回答
1

要将 light table 与 clojurescript 一起使用,与 clojure 项目的一个区别是:

如果我将某些页面与浏览器(内部或外部)连接,我需要 在终端中运行:
lein cljsbuild auto 。

否则找不到goog相关的js。

您可以从这里查看:
https ://groups.google.com/forum/#!topic/light-table-discussion/fJBLMzmZSWw

于 2014-02-20T10:03:34.260 回答