首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有两种加载方式的RequireJS -自带模块

具有两种加载方式的RequireJS -自带模块
EN

Stack Overflow用户
提问于 2014-08-14 06:54:31
回答 2查看 77关注 0票数 2

我正在尝试创建一个模块,可以异步加载(AMD)并通过HTML脚本标记加载。我将这个构造添加到我的模块中(我从jQuery源代码中获取它):

代码语言:javascript
复制
if ( typeof define === "function" && define.amd ) { 
    define( "mymodule", ['googlemaps'], function(google) {
       return myModule; 
    }); 
}

myModule = function() {
    // here code uses "google" 
}

我的模块依赖于Google,所以如果我通过HTML脚本标签加载模块,它就能工作。但是,如果我的模块是异步加载的,"google“只能在”定义“块中使用。是否有任何方法将此变量传递到全局范围(对于我的模块文件)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-14 07:07:46

代码语言:javascript
复制
(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; 
});
票数 1
EN

Stack Overflow用户

发布于 2014-08-14 07:02:51

您可以声明全局变量GoogleAPI并从定义到它附加值。

代码语言:javascript
复制
var GoogleAPI;
define( "mymodule", ['googlemaps'], function(google) {
    GoogleAPI = google;
    return myModule; 
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25301810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档