requirejs:我可以要求全局运行时变量吗?

时间:2013-03-26 08:00:58

标签: javascript requirejs amd

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

我可以以某种方式将该全局包装在模块中以便从我的模块中获取它吗?像

这样的东西
define([the_global_application], function(app)

感谢您对此的看法。

1 个答案:

答案 0 :(得分:1)

是的,你只需要定义它。

// 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 property of RequireJS。您只需将其添加到选项文件中:

...
shim: {
        'globalApplication': {
            deps: ['underscore', 'jquery'], // again, you should not need them
            exports: 'yourGlobalVar'
        }
}
...

shim包装不支持AMD的库,因此要使此设置有效,您需要globalApplication的js。这不是你的情况。