【问题标题】:Other than data binding, what advantages does backbone.js (or knockout.js) offer除了数据绑定,backbone.js(或knockout.js)有什么优势
【发布时间】:2012-05-22 09:25:17
【问题描述】:
我们在网站上使用的 JavaScript 代码库的结构非常好(如果有人感兴趣,请注明here)。
我一直在考虑将backbone.js(或针对某些功能的knockout.js)集成到我们的代码中——但经过仔细考虑后,我认为我不太关心数据绑定(我的应用程序并不关心)做密集的客户端服务器数据交换,它更偏向于服务器->客户端->js数据管道),所以我真的不在乎我是否没有动态数据绑定和同步。
由于我对这些库不是很熟悉,我担心如果选择不使用这些库,我会错过一些其他非常有用的功能。我是吗?
【问题讨论】:
标签:
javascript
backbone.js
knockout.js
javascript-framework
javascript-databinding
【解决方案1】:
我首先要指出,虽然声明式数据绑定是 KnockoutJS 的关键特性,但它不是核心骨干框架的一部分。确实存在多个插件,例如(Rivets.js 和 Orchestrator),它们在 Backbone JS 中提供此类功能。
现在来到您问题的主要方面 - 就数据绑定以外的优势而言,KnockoutJS 没有太多可提供的。但是,即使交互式数据绑定不是主要问题,您也绝对应该考虑使用 BackboneJS。原因是 Backbone 捆绑了客户端路由系统和一种简洁但最小的方法来管理从服务器获取的 javascript 数据。
正如您提到的,您的应用程序是数据驱动的,您在客户端中获取的数据可能不是一次性获取的,而是增量更新的。在这种情况下,拥有可观察的模型和集合可能会帮助您很好地管理您的应用内数据依赖关系(以及保持任何用于可视化数据同步的部件。)
【解决方案2】:
如果我正在构建一个完整的单页网络应用程序,我个人会使用主干。如果您的网站主要是 HTML,但使用 JS 来实现一些次要的附加功能,我不会担心。 Backbone 擅长处理客户端数据模型并将更改绑定到这些模型以查看更新。
就我个人而言,我使用了敲除,发现它依赖于 HTML 中的数据绑定令人困惑。这对我来说效果不佳。构建部分动态的网站可能更友好一些,因为很多逻辑都直接进入 html 视图层。您可能想收听最近的播客采访淘汰赛的创建者,因为它可能会阐明一些事情。 http://javascriptjabber.com/
就我而言,在构建一个包含一些动态元素的大型网站时,我一直坚持使用一些全局 jQuery 插件和页面特定 JS 的模式。对于特定页面的简单添加,它足够好。
我不知道这个问题是否超级具体,所以这里是一个通用的答案:)