clojure深入学习
学习clojure有一段时间了,大多停留在看clojure doc与api和书籍上面,看的写的都是基于repl的一些零碎单调的小例子,基本的函数与关键字大概熟悉了,但还需要大量案例与工程的学习,在这篇文章中,我将零零碎碎地把自己阅读工程源码和如何构建自己的web项目的过程记录在这篇文章中,目前在读的主要是三个github上clojure web工程,工程不大,还是比较适合自己对clojure的进一步的学习,这里我贴下路径,
一个基于noir框架+bootstrap编写的关于tair(kv系统)的监控项目
https://github.com/dutor/lemon/blob/master/project.clj
一个zk的web框架,和上面这个工程类似
https://github.com/qiuxiafei/zk-web
也是类似的基于compojure的计算买房贷款的小工程
https://github.com/xumingming/house
基于目前自己clojure的熟悉程度,学习上面三个小工程,还是有一定难度,但还得硬着肚皮坚持看下去,如有心得,再来次记录一二。
lemon工程阅读笔记:
启动clj是这样的(server.clj)
(server/load-views-ns 'lemon.views)
(defn -main [& m]
(let [mode (keyword (or (first m) :dev))
port (Integer. (get (System/getenv) "PORT" "8011"))]
(server/start port {:mode mode
:ns 'lemon})))
对于以上两段代码,目前还没搞清楚是如何执行的,-main()作为程序入口,执行了start方法,但(server/load-views-ns 'lemon.views) 这段代码又是怎么执行的呢? 难道是类似java中静态代码块?这个疑问已经在网上提了问题,到时候有答案我会再记录下。
在这里我们还要理解keyword symbol 关键字与符号有什么区别.
->(seq? [1 2 3]) 处理的结果是false 证明不是序列哟
->(coll? [1 2 3] 处理的结果是true
上一篇: clojure 变量绑定