您的位置:首页 > 其它

ClojureScript 基本语法

2013-04-07 13:29 225 查看
(ns example.hello) ; 命名空间

(.log js/console "Hello from ClojureScript!") ; js为windows
(.log js/console "TestAuthor: snake")

; 变量
(def foo "bar")
(defn abc []
(let [bar 1])
(.log js/console bar))

(def ^:dynamic x 5) ;直接根目录绑定x
(binding [x 10]
(.log js/console x)) ; 执行时的函数区域内的x变量
(.log js/console x)

; 数组
(def aArray (array 1 2 3))
(.log js/console aArray)
; 对象
(def o (js-obj "foo" 1 "bar" 2))
(.log js/console o)

; 列表 集合 向量 映射 都是是这样的形式 关键字替换或者字面量替换
(def l1 (list 4 5 6))
(def l2 '(7 9 8))
(.log js/console l1 l2)

(def v [1 2 3 4 5 6])
(conj v 0)
(.log js/console v)
(.log js/console (nth v 0)) ; 提取序列第零个

; 可选参数
(defn foo [a b c] c)
(.log js/console (foo 1) (foo 1 2 3))

; 分发
(defn foo1
([a] 1)
([a b] 2)
([a b c] 3))
(.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内部支持的还要强大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: