我是Web应用程序的新手,更具体地说是这个MV*
模式。我们正在创建一个Web应用程序,我们正在考虑脱离jQuery,而不是完全,但我们正在尝试使用MVC,MVVM或MVP支持来实现客户端语言。基本上是将视图与模型分开的东西。作为MV*
模式的新手,我偶然发现了this site.
它基本上列出了(差不多!)所有支持这种MV*
模式的客户端语言/框架,在访问它之后我真的很困惑。因为根据这个网站..
在一天结束时,Ember.js是唯一拥有的框架 我想要的一切。我最近移植了一个相对较小的Backbone.js 应用到Ember.js,尽管有一些小的性能 问题,我对结果代码库感到非常高兴。存在 在Yehuda Katz的支持下,Ember.js周围的社区也是 惊人。这绝对是值得关注的框架。
但是在SO上,我找到了this,这让我觉得角度更好了,而在SO上,this和this让我觉得它可能是我正在寻找的主干。
更糟糕的是,测试表明结果完全不同。 在这里
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作为语言 在开放的网络平台上进行网络开发。“
因此,如果要替换js,为什么我甚至会考虑学习这些js库/框架?
所以,基本上,这一切搞砸了,我完全糊涂了?任何人都可以帮我决定吗?
答案 0 :(得分:26)
可能没有客观答案,但这是我的2美分:
Backbone通常会导致更大的代码库,更难以维护。类似于你的链接中的轶事,我曾经在一个项目中工作,其中代码从使用Backbone的2500行收缩到使用Angular的600行。淘汰赛可能会产生同样小(=好)的结果。我的同事已经从Backbone转移到Knockout,之后更加快乐。
Backbone的优势在于它非常轻巧,并为您提供了更多的结构选项。这也意味着您可以进行更多性能调整,因此速度更快。那些相同的方面也是它的缺点:你需要自己构建事物意味着:更多代码,更复杂和可能更多的错误。
关于你提到的测试:它们不是客观的,因为它们强调一个非常特殊的用例。此外,他们是由Backbone本人的作者发布的,所以很明显他们在很好的基础上展示了Backbone。对于普通用户界面,无论你选择哪一个(Backbone,Angular,Knockout),性能都不应该成为问题。 Angular的一个警告:如果你想在你的页面上动态显示超过2000个元素,那么它可能会有问题(请参阅Angular创建者自己的答案:How does data binding work in AngularJS?)。
关于Dart:它的目标是成为一种语言,而不仅仅是语言中的MV *框架。这是一个完全不同的野兽,如果你只需要一个MV *框架,Dart就会有点过分。此外,Dart仍然非常年轻,在大多数浏览器中都不受支持。
答案 1 :(得分:3)
嗯,首先,这个问题确实没有任何“好”的答案。如果你问他们的创作者,所有的MVC库都很好:p 也就是说,我建议您开始阅读TODO-MVC中的示例,这样您就可以看到简单的TO-DO Web应用程序需要多少代码,以及复杂程度如何。然后决定你自己愿意接受什么。 我的个人推荐是Backbone。此外,还有一些互补的库可以做(几乎)神奇的东西,比如Backbone Nested。
祝你好运!