mvvm框架

網上的mvvm框架好多,整理一下網上的評論,仁者見仁,智者見智吧 ,好比前端

vuejs angular knockoutjs avalonjs emberjs WinJS(前三個學習過,後邊都沒看過)vue

兼容性:angularJS(IE9), EmberJS(IE8), KnockoutJS(IE6), WinJS(IE9),avalonjs(IE10)mysql

Vue.js 

咱們的玉溪大神開發的jquery

優勢:angularjs

  1. 簡單:官方文檔很清晰,比 Angular 簡單易學。
  2. 快速:異步批處理方式更新 DOM。
  3. 組合:用解耦的、可複用的組件組合你的應用程序。
  4. 緊湊:~18kb min+gzip,且無依賴。
  5. 強大:表達式 & 無需聲明依賴的可推導屬性 (computed properties)。
  6. 對模塊友好:能夠經過 NPM、Bower 或 Duo 安裝,不強迫你全部的代碼都遵循 Angular 的各類規定,使用場景更加靈活。

缺點:web

    1.我的項目。ajax

    2.更新太快。sql

AngularJS

優勢:mongodb

    1. 動態視圖:之前歷來沒有想過js能夠如此擴展HTML的屬性,可是AngularJs作到了,它替咱們靜態的HTML加了不少擴展性功能,有一種讓HTML由死變活的感受。
    2. 完善:是一個比較完善的前端MVW框架,包含模板,數據雙向綁定,路由,模塊化,服務,依賴注入等全部功能,模板功能強大豐富,而且是聲明式的,自帶了豐富的 
      Angular 指令。
    3. Google維護:AngularJS有Google來維護,無疑有了一個強大的後臺,對於推廣和維護明顯比Vue.js和avalon有優點,社區也很是活潑,可以很好促進它的發展。
    4. AngularJS & Ionic:Ionic: Advanced HTML5 Hybrid Mobile App 
      Framework,這倆就是一個好基友,Ionic經過用AngularJS爲了建立一個框架,最適合開發的豐富和強大的應用程序。上次於知乎答了一個相關問題: 
      作webapp開發,性能和效率最好的框架和打包app平臺分別是哪一個? 
      • 湯威的回答,詳細能夠見這裏。

缺點:

    1. 大而全:學習起來有難度,對於我來說學習曲線很曲折,比較難理解一些。
    2. 推翻重寫:前段時候逛社區發現AngularJS2.0會把以前的推翻重寫,兩個框架的改變很大,基本是兩個框架了,等因而說等到2.0出來後又須要從頭開始,不過又說回來,@徐飛老師的[翻譯]有關Angular 
      2.0的一切 · Issue #8 · xufei/blog · GitHub這篇文章很好說明了AngularJS2.0的變化。
    3. 不支持IE8如下,貌似2.0變得只支持移動端了,等到出來後再看吧。

knockoutJS

一、MVVC架構瞭解—viewmodel

把後端邏輯放到前端處理,前端把view與viewmodel之間綁定,而且對viewmodel的數據進行邏輯處理。然後端則是經過ajax把viewModel和model進行數據交換。(meteor則是進一步,直接在前端操做MongoDB(子數據庫),而後子數據庫和主數據庫會自動進行數據同步)數據庫

二、數據綁定

angular的數據綁定是使用髒檢查事件。 
knockoutJS能夠選擇爲one way ,one time,two way綁定

ko.observalbe:對數據的get和set ko.computed:實時計算數據 applyBindings:對viewmodel進行應用。 
data-binding對函數和數據綁定:click\event\value\text等值的綁定 
Simple List:ko.observableArray

三、SPA

其實後臺並無太大改變,邏輯依然,只是把頁面的處理邏輯交給了前端。讓前端更加像一個APP。 
SPA:Single Page Application。使用ajax和服務器及數據庫交換數據:服務器傳輸時只須要傳輸json,不傳頁面。使界面更加友好。我的感受KnockoutJS適合開發SPA的緣由就是MVVM的模型,多個Page共享同一個ViewModel,使信息傳遞更加簡單。而angular則再進一步,使用Service、directive、controller給一個應用劃分好層次,使結構清晰。ps:我的比較喜歡不一樣的page使用不一樣的控制器。

四、總結

KnockoutJS把邏輯移到前端後,但我的感受只是提供一個雛形,而沒有像angular同樣進一步的給邏輯分層,讓邏輯更加清晰,使代碼維護更加簡單。KnockoutJS僅提供了數據綁定功能實現了ViewModel。而angular則給人感受實現了前端的MVC分層。 
可是無能否認的是,knockoutJS使用的開發思路和jQuery一致,都是先渲染DOM,再操做DOM。所以不須要太大的改變開發思路,致使學習成本沒angular那麼高。若是做爲一個學習理解SPA和MVVM概念的框架,是比較好的。

相關文章
相關標籤/搜索