我将 Backbone 与 RequireJS 一起使用,我的视图需要在对应于各自 RESTful API 的 20 个集合之间切换。
“正常”的方式可以很好地处理事情,除了需要为每个 API 定义一个新的 Collection 之外,这会导致代码库非常臃肿:
收集(x 20 次)
define(function(require) {
var Backbone = require('backbone');
var c = Backbone.Collection.extend({
url: '/path/to/api-1'
});
return new c();
});
看法
define(function(require) {
var Backbone = require('backbone'),
c1 = require('./collections/collection-1'),
...
c20 = require('./collections/collection-20');
var v = Backbone.View.extend({
/* Some methods to toggle between Collections here */
});
return v;
});
通过只return c;
在 Collection 内部执行,并在 View 内部调用new c({url: /path/to/api-1});
,我能够减少高度重复的 Collection 定义;但现在在每次new c();
调用时,API 总是会被戳以检索新的数据副本,这是对资源的浪费,也是我不想要的。
有什么方法可以让 Collections “持久化”?哪个更好地满足以下所有标准:
- 每个API对应的Collection,只
new
执行一次; - 每个集合都可以在使用 RequireJS 定义的不同视图之间共享/访问;
- Collection的定义可以被所有API重用;
- 全局命名空间根本没有被污染。