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}))

https://github.com/zhujinxian/road


Bmob後端雲適合快速開發,減輕後端開發負擔


推薦閱讀:

如果打算走網路這條路,考CCNA和CCNP是不是很有必要?
樹莓派2性能如何?
大學是否有權力壟斷校園內的網路?
QQ空間出現的盜號手段是什麼原理?非常詭異。
光貓連接無線路由1,無線路由1連接一個交換機和路由2。無線路由2下的電腦無法ping通交換機下的電腦?

TAG:Web開發 | Python | 計算機網路 | Clojure |