ClojureScript 基本语法
1 (ns example.hello) ; 命名空间 2 3 (.log js/console "Hello from ClojureScript!") ; js为windows 4 (.log js/console "TestAuthor: snake") 5 6 ; 变量 7 (def foo "bar") 8 (defn abc [] 9 (let [bar 1]) 10 (.log js/console bar)) 11 12 (def ^:dynamic x 5) ;直接根目录绑定x 13 (binding [x 10] 14 (.log js/console x)) ; 执行时的函数区域内的x变量 15 (.log js/console x) 16 17 ; 数组 18 (def aArray (array 1 2 3)) 19 (.log js/console aArray) 20 ; 对象 21 (def o (js-obj "foo" 1 "bar" 2)) 22 (.log js/console o) 23 24 ; 列表 集合 向量 映射 都是是这样的形式 关键字替换或者字面量替换 25 (def l1 (list 4 5 6)) 26 (def l2 '(7 9 8)) 27 (.log js/console l1 l2) 28 29 (def v [1 2 3 4 5 6]) 30 (conj v 0) 31 (.log js/console v) 32 (.log js/console (nth v 0)) ; 提取序列第零个 33 34 ; 可选参数 35 (defn foo [a b c] c) 36 (.log js/console (foo 1) (foo 1 2 3)) 37 38 ; 分发 39 (defn foo1 40 ([a] 1) 41 ([a b] 2) 42 ([a b c] 3)) 43 (.log js/console (foo1 1) (foo1 "a" "b") (foo1 "a" 1 "b"))
直接上一点代码,个人感觉学会这些基本上可以开始写cljs了。
对于cljs的理解就是,用Clojure的语法来实现来应用到js里面。可以配合很多。比如说我经常使用的前端框架组合:SeaJS+Backbone+Underscore+jQuery+Knockout,还包括一点语法糖:CoffeeScirpt。这次包含cljs,想必肯定会令前端工程更加有力量。
cljs的特点应该是Clojure赋予它的语法,遍历啊,数据结构啊,当然了,思想上是更可靠的。
有一点需要具备的,我感觉,如果不是很js的话,感觉会被绕晕,而不知道自己在写什么东西。不知道cljs学的人会不会很多。毕竟很多人觉得脱裤子放屁。个人觉得真心可以使用。而且甚至可以脱离Clojure,想CoffeeScript那样来使用。因为使用了clojure就是在内部实现了一套SeaJS框架。种种好处是越写越感觉到。当然了。虽然是函数式风格,cljs还是对OO做了一点兼容,虽然是一点,但是比js内部支持的还要强大。