requireJS在多个上下文中

时间:2014-11-19 10:28:15

标签: backbone.js requirejs

我在requireJS中遇到了一些上下文问题。我们有两个基于requireJS和骨干的JS项目。如果在自己的页面上工作,他们会很完美。但是如果我把它们放在同一页面上,它们的上下文会相互冲突。

两个项目都遵循类似的模块名称约定。

项目A:

Main.js:

require.config({
    baseUrl : "javascript/app1/",
    waitSeconds : 20,
    paths : {
        jQueryPB : "jquery-1.10.1.min",
        underscore : "underscore",
        backbone : "backbone-min",

    },
    shim : {
        underscore : {
            exports : "_"
        },
        backbone : {
            deps : [ "underscore", "jQueryPB" ],
            exports : "Backbone"
        }
    }
});



require([ "app" ], function(app) {

   app.startup();

});

App.js

define([ "jQueryPB", "backbone", "underscore", "models/app", "views/app" ], function($jpb,
        Backbone, _, appModel, appView) {

    var appInfo = new appModel();
    var app = new appView({
        model : appInfo
    });

    return app;
});

视图/ app.js

define(
    ["jQueryPB", "backbone", "views/moduleB"], function($jpb, Backbone, moduleB) {
        var appview = Backbone.View.extend({

....

视图/ moduleB

在moduleB中,我需要访问app实例的一些属性(Project A)。所以我使用var app = require(" app");

项目B:

项目B的模块结构与项目A非常相似。我只将app.js重命名为appb。还有一个moduleC还需要访问app实例(Project B)的属性

var appb = require("appB")

当我从主机html页面访问它时出现以下错误:

未捕获错误:模块名称" app"尚未加载上下文:_。使用require([])

有时加载项目B时出现OR错误:

未捕获错误:模块名称" appB"尚未加载上下文:_。使用require([])

看起来他们正在尝试从彼此的上下文或全局上下文加载模块,但只有一个应用程序实例存储在那里。

如何将模块设置为在其自己的项目上下文中生效?

由于

0 个答案:

没有答案