【问题标题】:Backbone/RequireJS and multiple modelsBackbone/RequireJS 和多个模型
【发布时间】:2012-02-01 23:20:41
【问题描述】:

我主要是 RequireJS。我看到它是一个很好的/必要的技术,但对我来说,实施它是一个真正的延伸。非常感谢您的帮助!

我正在尝试使用 Backbone 和 RequireJS 开发一个相当灵活的应用程序。问题是我完全习惯了 new Person() 这样的语法,而无需指定依赖项。是否有一种有效的方法可以将 RequireJS 与相当多的模型一起使用?我认为我的问题总是与退货有关。我考虑过使用工厂方法创建带有require函数的模型,但是这样做需要require函数是同步的,这完全违背了RequireJS的目的。

首先需要我的所有模型然后将它们包含在实例化函数中似乎并不正确 - 还是我这样做?

您对如何构建和建模这样的应用程序有任何建议或教程吗?

谢谢你帮助我!

JMax

【问题讨论】:

    标签: javascript backbone.js requirejs


    【解决方案1】:

    你可以使用我所说的 require js 模块模式。如果你知道一组类经常一起使用,你可以这样做。

    首先在一个单独的文件中定义每个类,然后定义一个模块将它们组合在一起

    Module.js
    
    define([
    
        './models/FirstModel',
        './models/SecondModel',
        './views/FirstView',
        './views/SecondView',
        'txt!./templates/template.tpl'
    
    ], function(FirstModel, SecondModel, FirstView, SecondView, template) {
    
        return {
            FirstModel: FirstModel,
            SecondModel: SecondModel,
            FirstView: FirstView,
            SecondView: SecondView,
            template: template
        }
    
    });
    

    然后当你想使用这个模块中的类时,你只需这样做

    define(['./Module'], function(Module) {
    
        var AView = Module.FirstView.extend({
    
            model: Module.FirstModel,
    
            render: function() {
    
                this.html(_.template(Module.template)(this.model.attributes));
    
                if (something) {
    
                    this.$el.append(new Module.SecondView().render().el);
                }
            }
        })
    
        return AView;
    });
    

    我不认为使用 requirejs 定义的模块我们应该返回一个实例——我们应该总是返回一个构造函数或一个对象。

    您应该完全接受定义和要求 - 随着时间的推移,您会开始喜欢它 - 而不必考虑手动添加/跟踪依赖项等,或者(所以 2005 年!)将大部分东西合二为一文件:)

    【讨论】:

    • 绝对棒极了。谢啦!我希望我能给你更多的声誉......
    猜你喜欢
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    相关资源
    最近更新 更多