Backbone.js 是不是仅适用于单页应用程序?

Posted

技术标签:

【中文标题】Backbone.js 是不是仅适用于单页应用程序?【英文标题】:Is Backbone.js only for single page applications?Backbone.js 是否仅适用于单页应用程序? 【发布时间】:2011-12-14 04:11:44 【问题描述】:

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

我发现这篇文章:Organizing Your Backbone.js Application With Modules

我的应用程序不是 SPA(单页应用程序)。即使我的应用程序不是 SPA,我想知道带有 jQ​​uery 的 Backbone.js 是否会对我有所帮助。

【问题讨论】:

【参考方案1】:

Backbone 的优势在于它能够管理许多模型(甚至是复杂模型)并保持渲染页面与其当前值同步。它为 getter/setter 函数提供了一个接口,以便模型值的更改(有许多不同风格的“更改”)将在相应的视图上调用渲染,并且页面将正确反映底层模型。此外,它还提供了对模型进行保存、分页和路由操作的接口。

我已将 Backbone 广泛用于 SPA(它的亮点)以及更传统的多页面应用程序。它对 UI 和 DOM 操作没有特别的支持,但是结合 jQuery/Prototype/Zepto 来管理它们的渲染/操作。

基本上,主干最适合解开复杂的渲染逻辑链和模型更新。如果您觉得您的应用程序有很多视图元素需要与客户端将在页面上更新的模型保持同步,那么 Backbone 是一个很好的解决方案。如果您只需要选择和操作 DOM 元素,那就太过分了。单独的 jQuery 可以处理。

【讨论】:

在许多页面中使用 ajax 进行分页和搜索之类的东西,Backbone.js 会帮助组织这些东西吗? Backbone 有一个用于分页的history API documentcloud.github.com/backbone/#History【参考方案2】:

Backbone 确实与您提到的事情无关,但我也不会说它严格适用于单一年龄应用程序 (SPA)。我会说它适用于任何页面非常复杂的情况,将它们分成多个部分(例如,所有从一个模型中提取数据的多个视图)都会使你受益。

但是,我想说 Backbone.js 的优势在于 SPA 领域。

如果您还没有将 jQuery 用作应用程序的一部分,您可能会找到一些 jQuery 片段来满足您的某些需求。但是,jQuery 只与您提到的部分有关(简单的 DOM 操作,如果您使用 jQuery UI 则弹出窗口等),而不是与结构或组织有关。

【讨论】:

我知道 jquery 不是关于结构或组织的,所以我正在寻找可以帮助我的东西。【参考方案3】:

我相信主干的主要思想是使用 MVC 概念在复杂的应用程序中组织你的 JS 代码。 通过这种方式,您的应用变得更易于维护和添加新功能,更易于使用框架测试,例如 jasmine。

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

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

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

还有其他的东西,但基本上就是这个。

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

要记住的最重要的一点是,在使用主干时必须遵循 MVC 的概念。如果你不这样做,那么使用主干就没有意义。

【讨论】:

以上是关于Backbone.js 是不是仅适用于单页应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

一个适用于单页应用,返回原始滚动条位置的demo

Backbone.js 内存管理,上升的 DOM 节点数

Backbone.js 路由而不更改 url

如何仅使用 Javascript 在 Backbone.js 中引导集合

结合d3.js和backbone.js

backbone.js实战之导航控制器学习笔记