私は RequireJS でバックボーンを使用しています。私のビューは、それぞれの RESTful API に対応する、たとえば 20 個のコレクションを切り替える必要があります。
「通常の」方法で問題なく処理できますが、API ごとに新しい Collection を定義する必要があるため、コードベースが非常に肥大化します。
コレクション(×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;
});
Collection 内でのみ実行し、View 内return c;
で呼び出すnew c({url: /path/to/api-1});
ことで、非常に重複した Collection 定義を削減することができました。しかし今でnew c();
は、呼び出しごとに API が常に呼び出されて、データの新しいコピーを取得します。これはリソースの浪費であり、私が望んでいないことです。
コレクションを「永続的」にする方法はありますか? 以下の基準をすべて満たすのはどれですか。
- API の対応する Collection ごとに、1 つのみ
new
が実行されます。 - 各コレクションは、RequireJS を使用して定義された異なるビュー間で共有/アクセスできます。
- Collection の定義は、すべての API で再利用できます。
- グローバル名前空間はまったく汚染されていません。