Javascript requirejs:我可以需要一个全局运行时变量吗?
我在一个有点特殊的JS环境中使用requirejs,在这个环境中,应用程序提供了一个全局单例(我无法改变这个事实,这不是在典型的浏览器环境中运行的)。我正在为这个应用程序编写一种JSSDK,并希望提供使用这个全局函数的各种模块 我能否以某种方式将该全局函数包装到模块中,以便从我的模块中获取它?差不多Javascript requirejs:我可以需要一个全局运行时变量吗?,javascript,requirejs,amd,Javascript,Requirejs,Amd,我在一个有点特殊的JS环境中使用requirejs,在这个环境中,应用程序提供了一个全局单例(我无法改变这个事实,这不是在典型的浏览器环境中运行的)。我正在为这个应用程序编写一种JSSDK,并希望提供使用这个全局函数的各种模块 我能否以某种方式将该全局函数包装到模块中,以便从我的模块中获取它?差不多 define([the_global_application], function(app) 谢谢你的想法。是的,你只需要定义它 // mysingletonapp.js // define th
define([the_global_application], function(app)
谢谢你的想法。是的,你只需要定义它
// mysingletonapp.js
// define the module for our global var
define(['list', 'any', 'dependency', 'here'], function (l, a, d, h) {
return yourGlobalVariable;
});
(我认为这里不会有依赖关系,因为您只是包装了一个全局var
)
您可以像往常一样使用该模块:
require(['mysingletonapp'], function (app) {
// do something cool
});
如果要跳过所有这些,可以使用。您只需将其添加到选项文件:
...
shim: {
'globalApplication': {
deps: ['underscore', 'jquery'], // again, you should not need them
exports: 'yourGlobalVar'
}
}
...
shim
s包装不支持AMD的库,因此要使此设置生效,您需要一个用于globalaapplication
的js。这不是你的案子。谢谢亚历山德罗!我想这很简单,但我没想到。不过,我必须创建虚拟模块文件-如果您使用该requirejs的shim配置,除非我做错了什么,否则js将在您的baseUrl中搜索globalaapplication.js文件。