我正在尝试创建一个可以异步加载(AMD)并通过HTML脚本标记加载的模块。我将这个结构添加到我的模块中(我从jQuery源代码中获取):
if ( typeof define === "function" && define.amd ) {
define( "mymodule", ['googlemaps'], function(google) {
return myModule;
});
}
myModule = function() {
// here code uses "google"
}
我的模块依赖于Google Maps API,所以如果我通过HTML脚本标记加载我的模块就可以了。但是如果我的模块加载了异步变量“google”,只能在“define”块中使用。有没有办法将此变量传递给全局范围(对于我的模块文件)?
答案 0 :(得分:1)
您可以声明全局变量GoogleAPI
并将define中的值附加到它
var GoogleAPI;
define( "mymodule", ['googlemaps'], function(google) {
GoogleAPI = google;
return myModule;
});
答案 1 :(得分:1)
(function(global, factory) {
if (typeof define === 'function' && define.amd) { // requirejs
return define(['googlemaps'], factory);
} else if (typeof exports === 'object') { // nodejs
return module.exports = factory(require('googlemaps'));
} else { // html
return global['Odysseus'] = factory(global['googlemaps']);
}
})(this, function(GoogleAPI) {
...
return myModule;
});