30

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

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

归根结底,Ember.js 是唯一一个拥有我想要的一切的框架。我最近将一个相对较小的 Backbone.js 应用程序移植到 Ember.js,尽管存在一些小的性能问题,但我对生成的代码库更满意。在 Yehuda Katz 的支持下,Ember.js 周围的社区也很棒。这绝对是需要注意的框架。

但是在 SO 上,我发现了 this,它让我认为 angular 更好,而在 SO 上,thisthis让我认为它可能是我正在寻找的主干。

更糟糕的是,测试显示完全不同的结果。这里

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,在合理的时间内真的不能这样做。)

为了让事情变得更糟,我听说了dartwiki说..

Dart 的目标是“最终取代 JavaScript 作为开放 Web 平台上 Web 开发的通用语言”。

因此,如果要替换 js,为什么我还要考虑学习这些 js 库/框架?

所以,基本上,一切都搞砸了,我完全糊涂了?有人可以帮我决定吗?

4

2 回答 2

26

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

Backbone 通常会导致更大的代码库更难维护。与您的链接中的轶事类似,我参与了一个项目,其中代码从 Backbone 的 2500 行缩减到 Angular 的 600 行。淘汰赛可能会产生同样小的(=好)结果。我的同事们已经从 Backbone 搬到了 Knockout,之后更快乐了。

Backbone 的优势在于它非常轻巧,并为您提供了更多构建事物的选择。这也意味着您可以进行更多的性能调整,因此它可以更快。这些相同的方面也是它的缺点:您需要自己构建事物,这意味着:更多代码、更复杂并且可能存在更多错误。

关于您提到的测试:它们几乎不客观,因为它们强调一个非常特殊的用例。此外,它们是由 Backbone 的作者本人发布的,因此显然它们很好地展示了 Backbone。对于普通的 UI,无论您选择 3 个(Backbone、Angular、Knockout)中的哪一个,性能都应该不是问题。Angular 的一个警告:如果您想在页面上动态显示超过 2000 个元素,这可能会出现问题(请参阅 Angular 的创建者本人的回答:AngularJS 中的数据绑定如何工作?)。

关于 Dart:它的目标是成为一种语言,而不仅仅是一种语言中的 MV* 框架。那是一个完全不同的野兽,如果你只需要一个 MV* 框架,Dart 将是矫枉过正。此外,Dart 还很年轻,大多数浏览器都没有原生支持。

于 2012-10-18T13:13:43.003 回答
3

嗯,首先,这个问题真的没有任何“好的”答案。如果你问他们的创建者,所有 MVC 库都很好:p 也就是说,我建议你开始阅读TODO-MVC中的示例,这样你就可以看到一个简单的 TO-DO Web 应用程序需要多少代码,以及有多复杂是。然后自己决定你愿意做什么。我个人的推荐是Backbone。此外,还有一些互补的库可以做(几乎)神奇的事情,例如Backbone Nested

祝你好运!

于 2012-10-18T13:13:11.193 回答