javascript - 我应该将 Collection 实例放在 Backbone.js 中的哪里?

标签 javascript backbone.js

最好将其放置在全局对象中还是 View 实例中?

(我认为如果我将它放在全局上,例如:window.todos = new Todos(),如果有很多集合,它会污染全局对象;但是,将其放入 View 中可能会让事情变得有点困惑)

根据您的经验,最好的放置方式是什么?

最佳答案

我认为这确实取决于您的应用程序。我通常做的是为应用程序建立一个命名空间,并将集​​合和 View 放在那里:

// namespace for the application
var app = {};

// collection classes are also within the namespace
app.ToDos = Backbone.Collection.extend({ ... });

// and collection instances are in the namespace as singletons
app.todos = new app.ToDos();

对于大型应用程序,您可能会更进一步,为模型类、 View 类、路由器类和应用程序实例建立子命名空间。这样做有一些优点,尽管它们都不是真正重要的:

  • app 命名空间中提供可用集合,可以在必要时从多个 View 引用它们

  • 调试时,您可以访问控制台中的集合

  • 为应用程序建立新的命名空间可以让您添加许多新的全局变量,而无需污染全局命名空间或担心与其他库的不良交互

最后一点是为应用程序命名空间的一个非常好的论据,但这并不一定意味着您的集合需要位于命名空间的顶层,或者根本可以全局使用。主要问题是能够访问特定父 View (或父模型)之外的集合对您来说有多重要。如果您确定该集合是一次性的,那么将其完全排除在应用程序命名空间之外可能会更干净。

关于javascript - 我应该将 Collection 实例放在 Backbone.js 中的哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9610017/

相关文章:

javascript - 动态添加图像/ Canvas 上的 toDataURL

javascript - Backbone.syphon 和复选框

javascript - 无法从 Material UI 中的卡片内容中删除 padding-bottom

javascript - codemirror onKeyEvent 未触发

javascript - 如何在 ng-repeat 中添加类

backbone.js - 如何将所有模板放在不同的 HTML 文件中,如 "AppTmpl.html"以及如何访问主干中的这些模板?

jQuery $.post 无法正常工作

backbone.js - Backbone model.save 在服务器发送 200 :OK 时返回错误

JavaScript 自执行函数 - 有什么区别?

javascript - 使用jquery访问json数据来设置值