0

我正在查看Backbone+RequireJS项目上的 Addy Osmani 的 Todos mvc 站点。我正在查看 Todos 集合,因为它不是标准对象。Todos 集合仅在 todos.js 文件中实例化一次,因为我们不需要两个 Todos 集合。因此 Addy 在 todos.js 文件中创建一个实例并返回它。

我想知道这对于这种“单例”对象是否是一个好习惯。例如,假设我有一个模型并且我的 ject 只需要这个模型的一个实例,我是否应该在 model.js 文件中返回一个实例化模型(以防我使用 RequireJS)?在不使用 RequireJS 的情况下,我应该怎么做?

另一个问题是处理如何访问模型实例。如果我在 model.js 文件中返回一个实例(使用 RequireJS),我只需要将 model.js 放在依赖项列表中,我就可以得到该实例。但是如果我不使用 RequireJS 或者我决定不在 model.js 中返回实例化模型怎么办?在这种情况下,访问模型实例的良好做法是什么?

4

1 回答 1

0
var myApp = {
    controllers : {},
    models : {},
    routers : {},
    instances : {}

};

最简单的方法是:

myApp.models.Model = (function() {

    /* Model initiation etc can go here, just return the model in the end*/
    var Model = new Backbone.Model.extend({
        /* bla bla*/
    });

    return Model;

})();

myApp.instances.modelInstance = (function() {
    return new myApp.models.Model with app specific data;
})();

如果你要继续使用 requirejs (你应该让它很棒

define(["deps1", "deps"], function(deps1, deps2) {

 var Model = new Backbone.Model.extend({
            /* bla bla*/
        });

        return Model;
});

然后定义一个新文件(“modelInstance.js”)

define(["Model"], function(Model) {


    return new Model with app specific data;
});
于 2012-10-30T21:29:13.787 回答