我在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([])
看起来他们正在尝试从彼此的上下文或全局上下文加载模块,但只有一个应用程序实例存储在那里。
如何将模块设置为在其自己的项目上下文中生效?
由于