带有RequireJS的Singleton Backbone模型:反模式?

Rad*_*adu 8 javascript requirejs backbone.js

我有一个模型需要被几个视图访问,并在模型模块的定义中实现这一点我立即实例化它:

define([
    'jquery',
    'underscore',
    'backbone'
], function(_, Backbone) {
    var Foo = Backbone.Model.extend({
        // wondrous methods and properties
    });

    return new Foo();
});
Run Code Online (Sandbox Code Playgroud)

我只需要这个模型的一个实例 - 现在就是这样.据我所知,解决方法是有一个单独的App模块.就像是:

define([], function() {
    var App = {
        routers: {},
        models: {},
        views: {}
    };

    return App;
});
Run Code Online (Sandbox Code Playgroud)

您可以在app启动时实例化和存储对象的引用:

require([
    'App',
    'Foo'
], function(App, Foo) {
    App.models.foo = new Foo();
});
Run Code Online (Sandbox Code Playgroud)

但我觉得这是一个糟糕的选择,因为你基本上回到了拥有一个全局命名空间 - 这是RequireJS应该帮助避免的.

有没有其他选择,有没有什么好的理由可以避免像我上面描述的单身模型?

Kar*_*hik 5

嗯..我一直在使用RequireJS模块作为Singleton对象一段时间没有问题.这是我提出的一个相关问题.

将requireJS模块用作单例是不好的做法吗?

希望这可以帮助!