3

RequireJS定義からBackboneコレクション(または、さらに言えばView)を返す方法については、さまざまな記事でさまざまな例を見てきました。例えば:

define(['models/person'], function( person ) {
    var personCollection = Backbone.Collection.extend({
        model: person,
        url: "api/person"

    });
    // do this?
    return new personCollection();
    // or this?
    //return personCollection;
});

どちらのアプローチにもメモリの利点はありますか?どちらを使用するかを決定する標準のデザインパターンはありますか?

同じ質問がビューにも当てはまります。これは、ビューが両方の方法で実行されるのを見たからです。

4

1 に答える 1

0

オブジェクト自体ではなく「ブループリント」への参照を受け取るため、2番目の方法を実行します。ほとんどの場合、オブジェクトの作成自体を初期化する必要があります。

また、コレクションのインスタンスを1つだけ作成する場合でも、次のようなファクトリメソッドを使用することをお勧めします。

define(['models/person'], function( person ) {
    var personCollection = Backbone.Collection.extend({...}),
        singleCollection,
        export = {
          getInstance = function (options) {
            if (!singleCollection) {
              singleCollection = new personCollection(options);
            }
            return singleCollection;
          }
        }

    return export;
});

そして、あなたはそれをこのように呼ぶことができます:

require('models/person', function (person) {
  var personCollection = person.getInstance(options);
}
于 2013-03-26T13:00:03.070 に答える