在requirejs中返回主干集合的标准方法

时间:2013-03-26 12:55:14

标签: javascript backbone.js requirejs

我在不同文章中看到了有关如何从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;
});

这两种方法都有记忆优势吗?是否有标准的设计模式决定应该使用哪种?

同样的问题也适用于观点,因为我也看到过这两种观点。

1 个答案:

答案 0 :(得分:0)

我会采取第二种方式,因为那时你会收到对“蓝图”的引用,而不是对象本身。在大多数情况下,人们应该想要初始化对象创建本身。

此外,即使您只想创建单个集合实例,我也建议您使用这样的工厂方法:

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);
}