網上的mvvm框架好多,整理一下網上的評論,仁者見仁,智者見智吧 ,好比前端
vuejs angular knockoutjs avalonjs emberjs WinJS(前三個學習過,後邊都沒看過)vue
兼容性:angularJS(IE9), EmberJS(IE8), KnockoutJS(IE6), WinJS(IE9),avalonjs(IE10)mysql
咱們的玉溪大神開發的jquery
優勢:angularjs
- 簡單:官方文檔很清晰,比 Angular 簡單易學。
- 快速:異步批處理方式更新 DOM。
- 組合:用解耦的、可複用的組件組合你的應用程序。
- 緊湊:~18kb min+gzip,且無依賴。
- 強大:表達式 & 無需聲明依賴的可推導屬性 (computed properties)。
- 對模塊友好:能夠經過 NPM、Bower 或 Duo 安裝,不強迫你全部的代碼都遵循 Angular 的各類規定,使用場景更加靈活。
缺點:web
1.我的項目。ajax
2.更新太快。sql
優勢:mongodb
把後端邏輯放到前端處理,前端把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
其實後臺並無太大改變,邏輯依然,只是把頁面的處理邏輯交給了前端。讓前端更加像一個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概念的框架,是比較好的。