Javascript requirejs:我可以需要一个全局运行时变量吗?

Javascript requirejs:我可以需要一个全局运行时变量吗?,javascript,requirejs,amd,Javascript,Requirejs,Amd,我在一个有点特殊的JS环境中使用requirejs,在这个环境中,应用程序提供了一个全局单例(我无法改变这个事实,这不是在典型的浏览器环境中运行的)。我正在为这个应用程序编写一种JSSDK,并希望提供使用这个全局函数的各种模块 我能否以某种方式将该全局函数包装到模块中,以便从我的模块中获取它?差不多 define([the_global_application], function(app) 谢谢你的想法。是的,你只需要定义它 // mysingletonapp.js // define th

我在一个有点特殊的JS环境中使用requirejs,在这个环境中,应用程序提供了一个全局单例(我无法改变这个事实,这不是在典型的浏览器环境中运行的)。我正在为这个应用程序编写一种JSSDK,并希望提供使用这个全局函数的各种模块

我能否以某种方式将该全局函数包装到模块中,以便从我的模块中获取它?差不多

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文件。