最好将其放置在全局对象中还是 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/