我应该把Collection实例放在Backbone.js中的什么位置

Where should I put the Collection instance in Backbone.js?

本文关键字:js 什么 位置 Backbone Collection 实例 我应该      更新时间:2023-09-26

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

(我想如果我把它放在全局上,比如:window.todos = new Todos(),如果有很多集合,它会污染全局对象;然而,把它放进视图可能会让事情有点混乱)

根据你的经验,把它放在哪里最好?

我认为这实际上取决于您的应用程序。我通常所做的是为应用程序建立一个名称空间,并将集合和视图放在那里:

// 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();

对于大型应用程序,您可以更进一步,为模型类、视图类、路由器类和应用程序实例建立子命名空间。这有几个优点,尽管没有一个是真正关键的:

  • app命名空间中拥有可用的集合允许在必要时从多个视图引用它们

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

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

最后一点是为应用程序命名的一个很好的论据,但这并不一定意味着你的集合需要位于命名空间的顶级,或者在全局范围内可用。主要问题是,能够访问特定父视图(或父模型)之外的集合对您来说有多重要。如果你确定这个集合是一次性的,那么把它完全排除在应用程序命名空间之外可能会更干净。