除了数据绑定之外,backbone.js(或knockout.js)提供了哪些优势

时间:2012-05-14 21:04:24

标签: javascript backbone.js knockout.js javascript-framework javascript-databinding

我们在网站上使用的JavaScript代码库结构合理(如果有人感兴趣,可以概述here)。

我一直在考虑将backbone.js(或者knockout.js,对于某些功能)集成到我们的代码中 - 但仔细考虑之后,我认为我并不关心数据绑定(我的应用没有做密集型客户端< - >服务器数据交换,它更偏向于服务器 - >客户端 - > js数据管道),所以我真的不在乎我是否没有动态数据绑定和同步。

由于我对这些库并不熟悉,我担心通过选择不使用这些库,我会遗漏一些其他极其有用的功能。我呢?

2 个答案:

答案 0 :(得分:4)

如果我正在构建一个完整的单页Web应用程序,我个人会使用主干。如果你的网站主要是HTML,但是使用JS来获得一些小的附加功能,我就不用担心了。 Backbone擅长处理客户端数据模型并将更改绑定到查看更新。

就个人而言,我已经使用了淘汰赛,并发现它依赖于HTML中令人困惑的数据绑定。这对我来说不是很好。构建部分动态的网站可能会更友好一些,因为很多逻辑都直接进入了html视图层。你可能想听听这个最近的播客采访,这是淘汰赛的创造者,因为它可能会对事情有所了解。 http://javascriptjabber.com/

就我而言,在构建一个包含一些动态元素的大型网站时,我坚持使用一些全局jQuery插件和页面特定JS的模式。它适用于对特定页面的简单添加。

我不知道这个问题是否具有超级特异性,所以这是一个通用答案:)

答案 1 :(得分:1)

我首先要指出的是,虽然声明性数据绑定是KnockoutJS的关键特性,但它不是核心骨干框架的一部分。确实存在多个插件,如(Rivets.jsOrchestrator),它们在Backbone JS中提供了这样的功能。

现在谈到你的问题的主要方面 - 除了数据绑定之外的其他优势KnockoutJS没有多少提供。但是,即使交互式数据绑定不是主要问题,您也一定要考虑使用BackboneJS。其原因是Backbone捆绑了客户端路由系统和简洁但最小化的方法来管理从javascript中的服务器获取的数据。

正如您所提到的,您的应用程序是数据驱动的,可能是您在客户端中获取的数据不是一次性获取,而是逐步更新。在这种情况下,拥有可观察的模型和集合可能会帮助您很好地管理应用内数据依赖性(以及保持任何用于同步可视​​化数据的桥梁。)