文章目錄
- Backbone.js
- Ember.js
- CanJS
- AngularJS
- Dojo
- YUI
- Spine
- KnockoutJS
- jQuery
本文摘自smashingmagazine的Journey Through The JavaScript MVC Jungle部分內容,因為個人對於架構的應用總結和特點比較感興趣,這裡翻譯了部分的內容,希望對於大家有協助,如果你覺得不過癮,請閱讀原文,謝謝!
什麼時候你需要使用Javascript的MVC架構?
如果你開發的程式可能需要和API或者服務通訊,而且要求大量的視圖操作或者資料操作,你將發現使用一個成熟的架構非常有協助。
典型的例子就是Gmail和Google Docs。
如果你的應用只是依賴於伺服器來產生web頁面和視圖,並且只需要使用一些簡單的javascript或者jQuery來使得應用更加的具有互動性,使用架構就不是很有必要。
選擇架構的標準
如果你需要選擇架構的話,你需要問問自己這些問題:
- 這個架構究竟可以帶來什嗎?
- 這個架構是不是有實際的成功案例?
- 這個架構是不是成熟?
- 這個架構是不是足夠靈活或者相對比較死板?
- 你有沒有應用過相關的架構?
- 這個架構是不是有很好的文檔支援?
- 這個架構的大小,包括依賴的類庫,是不是很大?
- 支援這個架構的社區是不是不錯?
如何選擇架構? 什麼時候該用什嗎?
為了更好的協助大家選擇架構,這裡我們做了一個high-level的總結,希望能夠協助大家選擇架構:
Backbone.js
如果你需要靈活的方式來解決應用中層次分離問題,並且支援持久層和REST同步服務,models,views,事件驅動,模板和定位等這個架構是個不錯的選擇。它允許model修改後View能夠自動更新。而且很多大的公司都使用它來構建應用,並且擁有非常好的社區來支援。
Ember.js
如果你需要案頭層級的應用開發,並且擁有模組化,標準的介面,並且支援MVC的特性,不需要我自己處理所有的東西。要求支援持久化,計算相關屬性並且自動更新模板。支援正確的狀態管理而非手動的控制管理。Ember.js是不錯的選擇,同時它擁有非常詳細的文檔,及其模板說明。並且擁有豐富的工具。
CanJS
輕量級的試試模板綁定,定向,整合主流類庫(jQuery或者Dojo)以最佳化效能。支援MVC。可能在大型的應用中使用不多,但是適合於有複雜應用開發經驗的人,針對這種情況,canjs是個不錯選擇。
AngularJS
如果你需要使用宣示的方法來定義View的行為。主要通過自訂的HTML標籤和組件來達到目的。支援快速測試,URL管理和分離的MVC。和其它的架構不一樣,它提供HTML編譯器來建立自己的HTML中的DSL。靈感來自於即將來到的web platform特性,例如web組件,同時也擁有自己的工具。如果想瞭解相關特性,請參考:AngularJS的五個超酷特性
Dojo
提供非常棒的基礎用來開發大型的應用。支援成熟的組件架構,模組支援lazy載入並且支援非同步,簡單整合CDNs,擁有廣泛的模組(圖形,圖表,Grid等等),支援國際化本地化。支援OOP,MVC並且支援建立單元來解決複雜的架構。
YUI
需要利用YUI的擴充架構。支援Model,view和router,簡化書寫多視圖的應用支援routing,視圖變化等等。 擁有完整的方案套件括組件/控制項及其相關工具,協助你建立一個有組織的應用架構。擁有底層工具(yuiproject)。
Spine
協助你簡單的實現非同步介面並且不需要任何依賴。可以非常固定但是對於建立應用比較靈活。家頭提供了必須要的骨架,例如,model,view,controller,事件和routing。但是仍舊比較小。針對CoffeeScript做了最佳化,擁有非常清楚的文檔。
KnockoutJS
可以方便的使用清楚的底層資料模型和宣告性綁定構建複雜動態UI 。Model變化後能夠自動更新UI,使用雙向的綁定,支援依賴來跟蹤model資料。可以使用任何你想使用的架構。或者一個已存在的應用。支援內建模板,並且很容易擴充。
jQuery
搭建簡答的網站和web應用。不需要很多代碼,並且組織代碼不是個問題。主要專註於瀏覽器的區別,我們專心於開發本身。很容易的綁定事件,和遠程服務互動,支援擴充,擁有大量的外掛程式。
希望這些簡單的內容對於你的架構選擇有所協助,如果你有問題,請給我們留言!
來源:Javascript MVC架構之旅