如何在Lighttable中创建基本的ClojureScript Hello World应用程序?

时间:2012-12-28 12:14:31

标签: clojurescript lighttable

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

(ns dummy)

(js/alert "Hello lighttable")

我该如何运行?

更新

我现在已经想到了这一点,我将发布一个关于它如何被视频的视频,因为它非常直观。

更新2

以下是视频:

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

3 个答案:

答案 0 :(得分:14)

  1. 您应该首先通过lein(https://github.com/technomancy/leiningen)创建项目,如here所述
  2. 然后将cljsbuild添加到您的项目中,如here
  3. 所述
  4. 同时从{(1}}和lein ring server终端(或win中的cmd)运行,以便使用clojurescript autocompile运行本地Web服务器
  5. 将LightTable(通过底部的控制台)连接到您在步骤1中创建的项目
  6. 现在您可以在LightTable中编辑clojure和cljs,并且应该将更改发送到您的浏览器。但是不要忘记检查终端是否有错误,因为它们可能不会在LT中显示。
  7. 更简单的方法是使用http://clojurescriptone.com/和lein repl作为主要开发工具,并仅使用LT作为解决一两个文件中的一些小问题的附加工具。

答案 1 :(得分:3)

嗯,LightTable在开发阶段就像REPL一样好,但是当你完成后,你需要编译要执行的ClojureScript(即使用node.js)。

LightTable的设置

  1. 使用cljs扩展名打开clojurescript文件。
  2. 点击控制空间
  3. 选择连接:添加连接,然后选择LightTable
  4. enter image description here

    enter image description here

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

    enter image description here

    node.js的设置

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

    步骤1:下载cljs.jar编译器

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

    步骤2:创建源目录并创建文件

    └── 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:build以获取main.js脚本。

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

    步骤4:运行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/复制的。

答案 2 :(得分:1)

要使用带有clojurescript的灯光表,与clojure项目的一个区别是:

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

否则,无法找到与goog相关的js。

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