首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在创建应用程序之前声明Marionette+RequireJS应用程序中的所有依赖项

在创建应用程序之前声明Marionette+RequireJS应用程序中的所有依赖项
EN

Stack Overflow用户
提问于 2014-01-03 20:49:14
回答 1查看 155关注 0票数 0

我正在使用Marionette和RequireJS构建一个新的应用程序,我有以下结构:

代码语言:javascript
复制
/main.js -- Main require() call that includes app.js and calls Application.start()
/app.js -- Application definition
/modules
    /sub
        /controller.js -- Defines a sub-application, requires app.js
    ...

我试图将依赖关系保持在每个文件的顶层,而不是使用require()内联,以便r.js编译器能够找到它们。问题是,在我的controller.js文件中,我需要app.js (为了添加初始化器),所以我不能在app.js中要求controller.js,直到应用程序初始化后的,这意味着我不能将controller放在顶级的define()数组中。

以下是当前工作代码的简化示例:

代码语言:javascript
复制
// app.js
define(['marionette'], function(Marionette) {
    var Application = new Marionette.Application();
    Application.on("initialize:after", function() {
        require(['modules/sub/controller'], function() {
            Backbone.history.start();
        });
    });
});

// controller.js
define(['app'], function(Application) {
    Application.module('SubApplication', function(SubApplication, Application, Backbone, Marionette, $, _) {
        var router = Marionette.AppRouter.extend({
            appRoutes: { "foo": "bar" }
        });
        var controller = { foo: function() {} };
        Application.addInitializer(function() {
            new router({ controller: controller });
        });
    });
});

我对“要求”和“玛丽奥内特”都很陌生,所以欢迎你提出任何建议!我知道我可以通过include选项r.js来包含我想要的文件,但我认为这个问题还是值得一问的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-03 22:17:48

在我的关于Marionette和RequireJS的书中,我选择这样做的方式是要求只对一个功能子集所必需的模块内联。这简化了开发,也意味着除非触发代码路径,否则不会加载模块。

R.js会很好地发现内联依赖(前提是将它们定义为字符串,即不是动态计算的)。此外,它们还将使用Almond.js (但不要忘记在构建文件中使用findNestedDependencies选项)。

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20912447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档