Clojure 適合個人用來做 Web 快速開發么?
Web 快速開發很多人用 Python 及其它動態語言,Clojure 作為 Lisp 的一種方言,也很靈活。那麼它適合用來做 Web 快速開發么? 理由是什麼?
相對比 Python,Clojure 又有什麼優劣勢?
應該說還是蠻適合的。Clojure雖然歷史不長但是支持web開發的"框架"[0]已經有了:Ring以及基於Ring的Compojure。Ring支持middleware機制(可以理解為插件),很多核心的功能都是通過middleware來實現的,比如session、cookie,params解析[1]等等,middleware機制使得你可以很輕鬆的向ring上面組裝你需要的功能,比如這裡[2]有一些已有的第三方的middleware。
對了Ring類庫本身大量借鑒了Ruby裡面的Rack、Python裡面的WSGI特性,因此在快速開發方面不用擔心。
雖然Clojure本身是JVM上面的語言,但是比Java爽的是,用Ring開發的代碼你不需要任何特殊配置就可以做到:不管你是改html代碼還是Clojure代碼都是可以馬上刷新就可以看到效果 —— 而不用重啟伺服器。這應該對於web開發速度比較重要的一個特性吧。
跟Python相比的缺點?一時還真的想不起來,可能我用的也不算多吧。這裡是我晚上花了兩個小時用Clojure寫出來的東西,你可以感受一下: 公積金貸款計算器
[0] Clojure裡面其實更喜歡叫類庫,而不是框架,因為框架聽起來是個很重的東西[1] https://github.com/ring-clojure/ring/tree/master/ring-core/src/ring/middleware
[2] https://github.com/ring-clojure/ring/wiki/Third-Party-Libraries開發還是很快的。http://rebajie.net 是我用clojure寫的。這個是我用clojure寫的blog 。。 http://github.com/baoliang/clojure-blog
很好用,可以開放埠,用來熱調試,同時可以實現插件動態管理,開發流程很簡單,快速,
(defn render-test [ret tmt]
(-&> (resp/response "------render----test------")
(#(resp/content-type %1 "text/plain"))))
(defn foo
"I don"t do a whole lot."
[x]
(str "來自源碼目錄的參數:" x))
(defn handler [^Integer x]
{:$r render-test :text (str "hello world, road goes sucess!" (foo x))})
(defn home [req content ^Integer num]
{:hiccup "home.clj" :content (str "home" content) :num num})
(defroad road (GET "/web-test-0.1.0-SNAPSHOT-standalone/main" handler)
(GET "/web-test-0.1.0-SNAPSHOT-standalone/home/:num{\d+}" home))
(defn -main [ args]
(log/info "---------log4j test-------")
(jetty/run-jetty road {:port 3000}))
Bmob後端雲適合快速開發,減輕後端開發負擔
推薦閱讀:
※如果打算走網路這條路,考CCNA和CCNP是不是很有必要?
※樹莓派2性能如何?
※大學是否有權力壟斷校園內的網路?
※QQ空間出現的盜號手段是什麼原理?非常詭異。
※光貓連接無線路由1,無線路由1連接一個交換機和路由2。無線路由2下的電腦無法ping通交換機下的電腦?