Javascript Backbone.js-跨多个路由共享集合

Javascript Backbone.js-跨多个路由共享集合,javascript,backbone.js,Javascript,Backbone.js,我正在开发一个包含多个“部分”的Backbone.js应用程序。每个“部分”可能有多个路由,但共享一个集合。下面是一个简单的示例(包括“a”和“b”部分): 在本例中,所有集合都是在路由器初始化时获取的,这样就可以跨多个路由共享它们,而无需在每个路由处理程序中重新获取。一开始这似乎很好,但当共享集合的数量开始增长时,我担心继续这样做。此外,为用户可能从未访问过的“部分”获取集合似乎很愚蠢——我更愿意按需加载数据 显而易见的替代方法是在每个路由处理程序中获取数据,而不是在路由器初始化时获取数据。这

我正在开发一个包含多个“部分”的Backbone.js应用程序。每个“部分”可能有多个路由,但共享一个集合。下面是一个简单的示例(包括“a”和“b”部分):

在本例中,所有集合都是在路由器初始化时获取的,这样就可以跨多个路由共享它们,而无需在每个路由处理程序中重新获取。一开始这似乎很好,但当共享集合的数量开始增长时,我担心继续这样做。此外,为用户可能从未访问过的“部分”获取集合似乎很愚蠢——我更愿意按需加载数据

显而易见的替代方法是在每个路由处理程序中获取数据,而不是在路由器初始化时获取数据。这意味着只提取实际需要的数据,但是,当在同一“部分”中的路由之间移动时,它仍然会执行不必要的提取。不再有任何收集数据的“共享”

处理这种情况的好方法是什么?我觉得我需要实现某种类似缓存的结构。是否存在现有的解决方案

谢谢


-斯科特

假设我理解这个问题。。。您可以在初始化时跳过抓取(如您描述的备选方案所示),但也可以在需要时完全跳过集合的实例化。然后声明工厂(ish)方法:

然后从每个路由处理程序中调用它:

a1: function() {
  var view = new View({ title: 'a1', collection: this.getOrFetchCollection('a') });
  show(view);
}

假设我理解这个问题。。。您可以在初始化时跳过抓取(如您描述的备选方案所示),但也可以在需要时完全跳过集合的实例化。然后声明工厂(ish)方法:

然后从每个路由处理程序中调用它:

a1: function() {
  var view = new View({ title: 'a1', collection: this.getOrFetchCollection('a') });
  show(view);
}

美好的这似乎是构建一种缓存的好方法。集合的类型会有所不同,因此将其构建为混合到每个所需集合中可能更有意义。这似乎是构建一种缓存的好方法。集合的类型会有所不同,因此将其构建为混合到每个所需集合中的东西可能更有意义。