這篇文章是2012年就已經翻譯了的,艾瑪如今都2014中了。。。。 javascript
Gordon L. Hempton是西雅圖的一位黑客和設計師,他花費了幾個月的時間研究和比較了12種流行的JavaScript MVC框架,並在博客中總結了每種框架的優缺點,最終的結果是,Ember.js勝出。 java
這次比較針對的特性標準有四種,分別是: git
- UI綁定(UI Bindings)
- 複合視圖(Composed Views)
- Web表現層(Web Presentation Layer)
- 與其餘框架良好協做(Plays Nicely with Others)
對於各類JavaScript MVC框架,Gordon都總結了優缺點: angularjs
- Backbone.js——優勢:強大的社區,強勁的勢頭;缺點:抽象較弱,不少功能亟待增長。
- SproutCore——優勢:對綁定的支持,可靠的社區,大量特性;缺點:過分規範,難以和不須要的特性解耦。
- Sammy.js——優勢:易於學習,更容易和現存的服務端應用程序整合;缺點:過於簡單,沒法應用於大型應用程序中。
- Spine.js——優勢:輕量級,文檔很完備;缺點:它的核心概念「spine」是異步的用戶界面,這意味着理想情況用戶界面永遠不會發生堵塞,而這個基礎有缺陷。
- Cappuccino——優勢:大型深思熟慮後的框架,良好的社區,很棒的繼承模型;缺點:由iOS開發者建立,使用JavaScript模擬Objective-C。
- Knockout.js——優勢:對綁定的支持,完備的文檔和教程;缺點:綁定語法拙劣,缺乏統一的視圖組件層級關係。
- Javascript MVC——優勢:可靠的社區;缺點:基於字符串的繼承模型不好,控制器與視圖關係過密而缺乏綁定。
- GWT(Google Web Toolkit)——優勢:全面的框架,良好的社區,可靠的基於Java的組件繼承模型;缺點:可能沒法經受時間的考驗,另外,Java在客戶端上的抽象有些笨拙。
- Google Closure——優勢:很好的基於組件的UI組合系統。缺點:缺乏UI綁定支持。
- Ember.js——優勢:很豐富的模板系統,擁有複合視圖和UI綁定;缺點:相對較新,文檔不夠完備。
- Angular.js——優勢:對模板範圍和控制器設計有很好的考慮,擁有依賴注入系統,支持豐富的UI綁定語法。缺點:代碼的模塊性不強,視圖的模塊化也不夠。
- Batman.js——優勢:代碼清晰,綁定、持久化的方法簡單;缺點:使用了單例控制器。
通過對以上各類Javascript MVC框架特性的比較,Gordon認爲只有Ember.js可以徹底知足他的要求,從而成爲他最終選用的框架。 github