BackboneJS vs JavaScriptMVC vs KnockoutJS

Dre*_*rew 20 javascript javascriptmvc backbone.js knockout.js

我想将JavaScript框架用于复杂的Web应用程序.我一直在看Backbone.js,knockout.js和JavaScriptMVC.作为客户端JavaScript重型网络应用程序的新手,我不确定选择哪一个.每个人都有一个非常不同的方法来分离关注点.模型/视图/控制器与模型/视图/ ViewModel与模型/视图/集合.

你们有什么感想?决定因素是什么?哪一个最容易上手?你的经历是什么样的?

Ale*_*Gad 17

你不可能出错,特别是如果你正在构建一个复杂的JavaScript用户界面.如果您选择不使用任何一种,您可能会遇到很多难以调试的代码.我个人喜欢Backbone,但它们都是轻量级的,允许你自由使用模板语言(我使用JQuery模板).我认为是什么让我选择Backbone是Knockout将其组件与你的html混合的方式:

<span data-bind="text: myItems().count"></span>
Run Code Online (Sandbox Code Playgroud)

您可以避免使用Knockout上面的结构,但这足以让我走向Backbone.我还喜欢这样一个事实,即骨干网对我的项目中已经使用的下划线和jquery都有依赖性.

  • @HostDude:有趣的是,有一半的用户说这种陈述性绑定是正确的方式,而另一半用户说它是邪恶的.两者都是正确的:)我个人认为,如果不使用任何属性查找,只需简单的"text:myItemsCount",一切都不错.换句话说,我确信`data-bind`属性和`class`一样邪恶,即完全没有:) (3认同)
  • IMO内联"绑定声明"很糟糕,因为它混淆了HTML并混淆了HTML.事实上,我记得有一天每个人都在HTML中添加了TONS inline-onclick JavaScript.然后...... jQuery出现并真正开启了非突兀分离的想法......人们开始宣称这个想法是神圣不可侵犯的.那么现在......我怎么能相信突兀的HTML属性在某种程度上是好的还是更好?答案是......他们不是!让我们面对它......非正式的标记从REAL HTML中取走......这是一种突兀的定义. (3认同)

dyl*_*zed 8

以HostDude的评论为基础 - 这是一个功能,而不是一个bug :)淘汰的一部分概念是你的Controller/Model和View之间有一层.这使我们可以将HTML模块化为包含数据映射的小组件.

所以是的,JS绑定混合在一起,但它们没有混合到原始HTML中 - 而是将它们添加到微小的模块化Jquery模板中.通过在jQuery模板级别显式添加这些数据绑定,我们可以完全控制映射到什么内容 - 而不会干扰我们的底层应用程序数据模型:)我喜欢Knockout!