Requirejs 在require.js中定义全局变量时遇到问题
我试图定义一个全局对象,我可以在所有模块中引用它。但是,在模块中,我无法引用我的路径,它表示“g”不存在 在main1.js中,我有:Requirejs 在require.js中定义全局变量时遇到问题,requirejs,Requirejs,我试图定义一个全局对象,我可以在所有模块中引用它。但是,在模块中,我无法引用我的路径,它表示“g”不存在 在main1.js中,我有: requirejs.config({ paths: { Underscore: 'lib/underscore/1.3.3/underscore.min', Backbone: 'lib/backbone/0.9.2/backbone.min', Globals: 'lib/backbone/ globalVars' } });
requirejs.config({
paths: {
Underscore: 'lib/underscore/1.3.3/underscore.min',
Backbone: 'lib/backbone/0.9.2/backbone.min',
Globals: 'lib/backbone/ globalVars'
}
});
require([ 'views/pages', 'views/filters'], function(allPages, filters) {
filters.render();
allPages.render();
});
(function() {
var Globals = {
isDemo: false
}
console.log('in globalvars') // this shows in my console
}).call(this);
define([
'Globals',
'Underscore',
'Backbone'
], function(g, _, Backbone){
console.log(g.isDemo) //<-- returns "TypeError: g is undefined"
在globalVars.js中,我有:
requirejs.config({
paths: {
Underscore: 'lib/underscore/1.3.3/underscore.min',
Backbone: 'lib/backbone/0.9.2/backbone.min',
Globals: 'lib/backbone/ globalVars'
}
});
require([ 'views/pages', 'views/filters'], function(allPages, filters) {
filters.render();
allPages.render();
});
(function() {
var Globals = {
isDemo: false
}
console.log('in globalvars') // this shows in my console
}).call(this);
define([
'Globals',
'Underscore',
'Backbone'
], function(g, _, Backbone){
console.log(g.isDemo) //<-- returns "TypeError: g is undefined"
最后,在view/pages.js中,我有以下内容:
requirejs.config({
paths: {
Underscore: 'lib/underscore/1.3.3/underscore.min',
Backbone: 'lib/backbone/0.9.2/backbone.min',
Globals: 'lib/backbone/ globalVars'
}
});
require([ 'views/pages', 'views/filters'], function(allPages, filters) {
filters.render();
allPages.render();
});
(function() {
var Globals = {
isDemo: false
}
console.log('in globalvars') // this shows in my console
}).call(this);
define([
'Globals',
'Underscore',
'Backbone'
], function(g, _, Backbone){
console.log(g.isDemo) //<-- returns "TypeError: g is undefined"
它很好用。我一直没能弄清楚为什么这不起作用。我希望能够只包含到globalVars的路径,而不是在每个需要它的模块中粘贴define块的样板文件,因为将isDemo更改为false还需要更新许多其他模块页面(main2.js、main3.js等)。谢谢 首先,您的
globalVars.js
不在模块模式中,因此requirejs不知道您试图注册为模块的内容。如果您更改该文件以使用该模式,如添加到main1.js中的define,您应该已经全部设置好了。您不将其定义为模块有什么原因吗?您看到了吗?:谢谢Waxen,就是这样!我还使用了主干线和下划线,所以我觉得我必须以类似的方式定义它。我用从main1.js中取出的define块替换了Globals.js的内容,现在它开始工作了!好东西!