參考:http://angularjs.cn/A0cV;html
Backbone的Model把服務器端的數據模型映射到瀏覽器端,綁定數據驗證機制,並與相應的REST操做綁定,這樣每一個數據模型都變成了獨立體,方便REST操做,卻限制REST的靈活性。好比我要將10個todo批量標記成已完成,它會發出10個REST請求。程序員
Backbone的Model沒有與UI視圖數據綁定,而是須要在View中自行操做DOM來更新或讀取UI數據,這點很奇怪。AngularJS與此相反,Model直接與UI視圖綁定,Model與UI視圖的關係,經過directive封裝,AngularJS內置的通用directive,就能實現大部分操做了,也就是說,基本沒必要關心Model與UI視圖的關係,直接操做Model就好了,UI視圖自動更新。而Model數據驗證、與服務器端的數據交互都是很是簡單而自由的。angularjs
AngularJS的directive,你輸入特定數據,他就能輸出相應UI視圖,這樣的directive能夠變成了一個html通用組件,好比文章編輯器組件、分頁導航組件、madal組件等,在不一樣應用中能夠直接拿來用,減小重複開發。我想,Backbone大概很難實現這樣的通用組件。瀏覽器
Backbone的View沒有把html與JavaScript解耦,要控制UI視圖,實際上就是用JavaScript控制DOM,或者經過第三方模板引擎控制HTML字符串,而這些,都須要程序員在代碼中用JavaScript自行實現。服務器
AngularJS不一樣,寫UI視圖就是寫正常的HTML/CSS,寫邏輯控制代碼就是用JavaScript操控數據(不是DOM),不一樣的就是增長了directive,實現DOM與數據的互動,如上所述,directive是通用組件。AngularJS只是定義了一個環境和一個數據與視圖交互的機制,並提供了若干通用組件和服務,因此AngularJS開發很簡單,很高效,很「原生態」。編輯器
雖然我沒有真正寫過桌面應用程序,但我以爲AngularJS的理念就是把WEB看成應用程序來寫——Web App。反觀Backbone,對於數據與UI視圖的互動並無大的改進,僅僅提供了數據變動事件通知,它側重於REST數據交互了,而REST數據交互原本是很容易處理的。spa
之因此徹底粘貼下來我只是想本身在理解理解,忘做者見諒,不要笑我。htm