Angular.js Backbone.js和其他MV*图案js库?

Raz*_*t4x 30 javascript frameworks web-applications backbone.js knockout.js

我是Web应用程序的新手,更具体地说是这种MV*模式.我们正在创建一个Web应用程序,我们正在考虑脱离jQuery,而不是完全,但我们正在尝试使用MVC,MVVM或MVP支持来实现客户端语言.基本上是将视图与模型分开的东西.作为这种MV*模式的新手我偶然发现了这个网站.

它基本上列出(差不多!)支持这种MV*模式的所有客户端语言/框架,在访问它之后我真的很困惑.因为根据这个网站..

在一天结束时,Ember.js是唯一拥有我想要的东西的框架.我最近将一个相对较小的Backbone.js应用程序移植到了Ember.js,尽管存在一些小的性能问题,但我对得到的代码库感到非常高兴.受到Yehuda Katz的支持,Ember.js周围的社区也令人惊叹.这绝对是值得关注的框架.

但在SO,我发现这个,这让我觉得,角度要好得多,而在如此反复,这让我觉得这可能是骨干什么,我期待的.

更糟糕的是,测试表明结果完全不同.这里

http://jsfiddle.net/HusVw/1/ Backbone clear winner

http://jsfiddle.net/ericf/NrpcQ/ Backbone winner again

http://jsperf.com/angular-vs-knockout-vs-extjs-vs-backbone/2 angular winner for less data for more its knockout

http://jsperf.com/knockout-js-vs-direct-dom-manipulation/3 Backbone again

http://jsperf.com/angular-vs-knockout-vs-ember/33 no way its ember as the site mentioned

所以,基本上这一切都让我感到困惑,我无法决定我应该学习的网名,以及我应该在网站上实施什么.在测试中Backbone明显突出,但我听到了很多knockout,但我提到的SO链接说的是angular什么?我知道这可能取决于我目前正在开发的应用程序,但我想要一个更广泛的观点,不仅对这个项目有用,而且对于更长期的有用?在哪种情况下你更喜欢哪个框架?或者我应该只学习它们吗?(jk,在合理的时间内不能真正做到这一点.)

为了让事情变得更好,我听说飞镖,维基说...

Dart的目标是"最终取代JavaScript作为开放网络平台上Web开发的通用语言."

所以,如果js将被替换,为什么hack我甚至考虑学习这些js库/框架?

所以,基本上,它都搞砸了,我完全糊涂了?任何人都可以帮我决定吗?

Mar*_* S. 26

可能没有客观答案,但这是我的2美分:

Backbone通常会导致更大的代码库,更难以维护.类似于你的链接中的轶事,我曾经在一个项目上工作,其代码从使用Backbone的2500行收缩到使用Angular的600行.淘汰赛可能会产生同样小(=好)的结果.我的同事们已经从Backbone转移到了Knockout,之后更加幸福.

Backbone的优势在于它非常轻巧,并为您提供了更多的结构选择.这也意味着您可以进行更多性能调整,因此速度更快.那些相同的方面也是它的缺点:你需要自己构建一些东西,这意味着:更多的代码,更复杂和可能更多的错误.

关于你提到的测试:它们不是客观的,因为它们强调一个非常特殊的用例.此外,他们是由Backbone自己的作者发布的,所以很明显他们会以良好的眼光展示Backbone.对于普通用户界面,无论你选择哪一个(Backbone,Angular,Knockout),性能都不应该成为问题.Angular的一个警告:如果你想在你的页面上动态显示超过2000个元素,那么它可能会有问题(请参阅Angular创建者自己的答案:数据绑定在AngularJS中如何工作?).

关于Dart:它的目标是成为一种语言,而不仅仅是语言中的MV*框架.这是一个完全不同的野兽,如果你只需要一个MV*框架,Dart就会有点过分.此外,Dart还很年轻,在大多数浏览器中都不支持本机.