Backbone.js只适用于单页应用程序吗?

18

我正在寻找一个简单的UI架构,其中包含一些基本的JavaScript函数,例如:选择所有复选框、图像裁剪、一些弹出窗口和其他一些插件。

我找到了这篇文章:使用模块组织您的Backbone.js应用程序

我的应用程序不是SPA(单页应用程序)。我想知道如果使用Backbone.js和jQuery能否帮助我,即使我的应用程序不是SPA。

3个回答

25
Backbone的实力在于其管理多个模型(甚至复杂的模型)并将渲染页面与其当前值同步的能力。它提供了一个接口来获取/设置函数,以便对模型值进行更改(有许多不同类型的“更改”),这将调用相应视图上的render方法,并且页面会正确地反映底层模型。此外,它还提供了用于保存、分页和路由模型操作的接口。
我广泛地使用Backbone用于单页应用程序(它在这方面表现出色),以及更传统的多页面应用程序。它没有特殊的UI和DOM操作支持,但结合jQuery/Prototype/Zepto可管理它们的渲染/操作。
基本上,Backbone最擅长解决复杂的渲染逻辑和模型更新问题。如果您感觉您的应用程序有许多视图元素需要与客户端在页面上更新的模型保持同步,那么Backbone是一个绝妙的解决方案。如果您只需要选择和操作DOM元素,那么它就过度了。仅使用jQuery即可处理此类问题。

诸如在许多页面中使用Ajax进行分页和搜索,Backbone.js能帮助组织这些事情吗? - Acaz Souza
Backbone为分页提供了history API。http://documentcloud.github.com/backbone/#History - Erik Hinton

3
Backbone主要不是关于您提到的那些事情,但我不会说它严格适用于单页应用程序(SPA)。我会说,它适用于任何情况下,您拥有非常复杂的页面,并且将它们分成多个部分将对您有所裨益(例如,几个视图都从一个模型中获取数据)。
然而,我认为Backbone.js的强项在于SPA领域。
如果您尚未将jQuery作为应用程序的一部分使用,则可以找到一些jQuery片段来解决您的某些需求。但是,jQuery主要关注您提到的部分(易于DOM操作,如果您使用jQuery UI,则为弹出窗口等),而不是关于结构或组织的问题。

1
我知道jQuery并不涉及结构或组织,所以我正在寻找一些能够帮助我的东西。 - Acaz Souza

0

我认为backbone的主要思想是使用MVC概念在复杂应用中组织JS代码。这样,您的应用程序变得更容易维护和添加新功能,也更容易使用像jasmine这样的框架测试。

Backbone还使基于SPA方法(使用ajax请求到服务器)成为可能(并且非常好)。它完全基于Restful概念,要使用backbone获取代码,重要的是要理解什么是Restful。

基本上,Backbone有一个路由器(可以像控制器一样工作,但不是控制器)。

模型是您可以管理应用程序的所有数据逻辑的地方。集合就像模型列表。视图是您将根据模型更改做出反应的地方。

还有其他事情,但基本上就是这样。

但正如我之前所说,您可以在没有SPA的情况下使用它。

最重要的是要记住,在使用backbone时必须遵循MVC的概念。如果您不这样做,使用backbone就没有意义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接