newland.js 一個node.js MVC框架

openkk 12年前發布 | 49K 次閱讀 Node.js JavaScript開發

newland.js是一個node.js MVC框架,這個MVC架構只是針對它的后端部分而已。當然有人立即會提出懷疑,世界已經有這么MVC框架,你的亮點在哪啊?回答通常有兩種:重復造輪子的意義,與新框架的特性。


是的,重造輪子,世界無時無刻地造輪子,造輪子的人為了編造了許許多“藉口”,我覺得最美妙的藉口是最近多《GTF: Great Teacher Friedman 》讀的東西,我覺得光是他說的那一點就能讓許多人閉嘴了——


當然,重新發明東西并不會給我帶來論文發表,但是它卻給我帶來了更重要的東西,這就是獨立的思考能力。一旦一個東西被你“想”出來,而不是從別人那 里 “學”過來,那么你就知道這個想法是如何產生的。這比起直接學會這個想法要有用很多,因為你知道這里面所有的細節和犯過的錯誤。而最重要的,其實是由此得 到的直覺。如果直接去看別人的書或者論文,你就很難得到這種直覺,因為一般人寫論文都會把直覺埋藏在一堆符號公式之下,讓你看不到背后的真實想法。如果得 到了直覺,下一次遇到類似的問題,你就有可能很快的利用已有的直覺來解決新的問題。

而這一切都已經發生在我身上。比如,在聽說 ANF 之后,我沒有看 Amr Sabry 的論文,只把原來的 CPSer 程序改了一點點,就得到了 ANF 變換,整個過程只花了十幾分鐘。而在 R. Kent Dybvig 的編譯器課程上,我利用 CPS 變換里面的直覺,改造和合并了 Dybvig 提供的編譯器框架的好幾個 pass,使得它們變得比原來短小好幾倍,而且生成很不錯的代碼。

現在我仍然是這樣,喜歡故意重新發明一些東西,探索不止一個領域。這讓我獲得了直覺,不再受別人思想的限制,節省了看論文的時間,而且多了一些樂 趣。一個問題,當我相信自己能想得出來,一般都能解決。雖然我經常不把我埋頭做出來的東西放在心上,把它們叫做“重新發明”(reinvention), 但是出乎意料的是,最近我發現這里面其實很是隱藏了一些真正的發明。我準備慢慢把其中一些想法發掘整理出來,發表成論文,或者做成產品。


我想我是違反“發明公會”的行規了,把這天大的秘密泄漏給大家,讓本來許多甘愿當一輩子碼農的人奮身而已賭一把,朝食物鏈的頂層爬去了!


有關食物鏈的論斷,是昨晚我在群里一個有三年經驗的SOHO談話時想到。他說,wordpress已占全球網站10%,許多人都靠 wordpress的二次開發過活。有的人能月賺5000$,當然這是有穩定客戶的情況下,印度阿三是強大的競爭對手。想一想wordpress的團隊才 多少人啊?二十來個,作為食物鏈的頂端他們肯定比國內的什么wordpress jam活得好!靠服務支持與流量帶來的廣告收入,世界范圍的榮譽,被人需要的滿足感……這是世上少有幾種圓滿生活方式了!再想rails團 隊,jQuery團隊,spring團隊, hibernate 團隊……老外這么熱衷搞開源,理由不一清二楚嗎?!


再回歸框架的本身,這是一個node.js框架。近年來,HTML5與chrome V8的優異表現,讓javascript繼ajax之后再次走進舞臺的中心。node.js只是后隨的一個大浪罷了。但這大浪由于ruby界,C++界等 大牛的加入,變成海嘯了。看一下github中各語言的活躍情況吧:

newland.js 一個node.js MVC框架

由于早些年javascript沒有賦以處理二進制的能力,帶來的致命影響是數據持久化與數據庫的連接干不了,導致javascript淪為玩具語 言。要知道一個網站最重要的是用戶數據,不能保存用戶數據就會被邊緣化。其次像讀取模板文件的內容,合并多個文件,寫入日志等活兒對網站來說也是至關重要 的!PHP的興起,是因為他讓這些工作變得更輕松更簡單。node.js提供了對二進制的支持,正是javascript第二次爆發的原因。 node.js模塊迅速增長讓專業的人做專業的事,


長久以來,前端與后端的地位就像中國的官僚系統一樣可笑,外行指揮內行。從JAVA的struts時代開始,視圖層的交互都是層層封裝在標簽庫內, 讓人無需寫javascript就能實現各種效果。然后,不是每個人都像google的員工聰明能干,那些WEB框架也不都像GWT那樣出色絕倫!于是有 PHP的紀元。PHP有什么優勢?《XXX,21天從入門到精通》!我想這樣的書名真的只能適用于PHP!入門簡單,而且存在大量這樣的培訓中心,而且 PHPer的招聘條件肯定把HTML,XML,CSS,JS等羅列進去!因此PHPer真是最廉價與實惠的工種。切圖仔只能干一樣,而且熟練工流動 快!JSer基本是騙人的,都是jQueryer,調BUG能力為零,寫出的代碼維護性也為零……因此找靠譜的切圖與JSer,基本上與PM一樣難,當 然,PM的良品率更低。但說這些有什么用呢?讓專業的人做專業的事!PHP能打敗JAVA在WEB的地位,是因為它更加專業。rails讓PHP為之戰戰 兢兢,是因為rails更專業,它起碼有個叫Prototype.js的子項目啊,Prototype.js建立了javascript的第一個王朝,直 到jQuery在四年前打敗了它。PHPer的人口眾多,天才也眾多,抄啊抄啊,抄了rails的數據庫遷移,智能手腳架,COC,再武裝上 jQuery,終于把rubyer的起義軍鎮住了!但node.js的起義軍怎么鎮壓呢?PHPer很少跑去rails陣營,但node.js的陣營每天 都有人“叛逃”過去!rails團隊成員兼jquery團隊成員的 Yehuda Katz 搞了Ember.js,他的理念是構建“超級Web應用”所需的一切,因此向node.js進軍勢在必行,雅虎在用nodejs構建它的雞尾 酒,jQuery是基于node.js進行構建測試壓縮打包,大名鼎鼎的EXT團隊擁有node.js最出名的WEB框架 express.js,mongodb的接口是javascript式,提供node.js的連接庫……node.js是時代的驕子,從來沒有這么多人為 一種語言搖旗吶喊,即使它的真相曾是被人罵得最多的語言,但我們知道,最該罵的是javascript之父,只花十天時間來構思它,還有導致第一次瀏覽器 大戰的網景與微軟,讓JS長期滯后不前,兼容性問題成為當時程序員的噩夢!


但美好的事物終會回歸,就像大陸與臺灣。大陸是PHP,臺灣為nodejs。讓專業的人做專業的事,這是市場的需求,生產力的呼喚!基于 node.js的web框架必然比PHP框架更把了解HTML,CSS與JS。前端的人才儲備必然流向node.js。requirejs讓JS開始走向 工業化的模塊化開發,國內的seajs也在做相同的事情,模塊化是構建大應用的關鍵,標識著JSer完成有能力開發像struct這樣巨弩級的web框 架!前端模板的興起,nodejs各種數據庫連接庫,session模擬的實現,再加之knockout這樣的MVVM模式被認同普及,web框架的難題 一一被打破。而我的新框架newland.js只是時代洪流的一員。


誠然,newland.js現在是非常非常弱小的,正如我在它的readme中 寫的一樣,它只是我到達后端大陸時被撞碎的海盜船的殘骸!后端的世界是如此廣闊古老神秘,以致于前端的世界好像一個伊比利亞半島。但后端的世界絕對不是美 洲新大陸,更精確的比喻是百年后,人類冒冒失失跑進擁有神級技術的外星人的領地。后端的世界沉睡著像JAVA三大框架的古老帝國,活躍數千PHP的新興國 家與rails這樣的圣劍騎士團!海岸上還遍布著其他登陸者,他們建立起geddyjs, railsjs, towerjs, meteorjs,expressjs等居民點!這就是WEB世界的現狀!PHP國家每年都跑到前端大陸劫掠數以萬計的碼農為它們做苦力,而只有 jQuery,EXT等團隊能與它們對等談判!不過他們有點像非洲的酉長,把培訓好的jQueryer奴隸賣給PHPer去了!jQuery號稱是能最快 制造這樣的優質奴隸!EXT心有不甘,因此有了express.js,夢想有一天光靠自己就能把控一個項目!而newlandjs就是mass Framework的express.js。


mass Framework由于長期的宣傳不足,及國人普遍不懂開源的好處,因此發展緩慢。但即便這樣,它也國內少數能與jquery抗衡的框架,它的架構與實現 都是相當優異了,匯集了我各個群的精英的設計成果。我不希望newlandjs走mass Framework的老路,總是處于缺員怠工狀態,于是抓緊發動群里的人加入進來。當然,我也希望園子里的人,或來自其他圈子的朋友加入進來。中國是不缺 開源項目,只是缺乏活躍的開源項目罷了。善于內斗分散了我們的戰斗力,導致我們被老外全部打敗,至今還在用老外的東西干活……


newlandjs有著宏偉的目標——開拓javascript新天地,實現真正的大前端!之所以這么說,是因為托HTML5與node.js所 賜,websocket將成為未來前后端交互的主要渠道,一改HTTP無狀態的困境。加之HTML5的改地址不刷新頁面的History 新API(見github上的pjax項目與新浪微博的運用),MVVM帶來的最小化刷新技術,HTML5的cache manifes, Local Storage……這一切令人驚異的技術都迫需一個跨前后端的框架來統合!knockoutjs可以完全不腳踢開jQuery,輕易處理各種DOM操作, 而且寫出的代碼被jQuery更易維護!這正是前端MVC(或其變種)興起的原因。但knockoutjs還是有弱點的,它最初要綁定數據的需要是怎么生 成的呢?還不是要依賴后端通過幾個子模板拼裝起來的嗎?這些子模板的拼裝方式與渲染輸出能不能再改進一點,像非死book的bigpipe一樣智能 呢?!還有模塊與模板的前后端共用。less在前后端實現CSS的DRY,解放CSSer的生產力!就算我不做newland.js,外國還會有人做這事 的。這是未來的趨勢。

項目主頁:http://www.baiduhome.net/lib/view/home/1344818494022

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!