当不在RequireJS环境中时,全局暴露AMD模块
Expose AMD module globally when not in a RequireJS environment
我正在尝试将经典JavaScript "类"转换为AMD模块。但是,我还需要继续将类导出到全局名称空间,因为一些遗留代码需要它。我尝试过this
,但是全局对象没有创建。我做错了什么?
define('VisitorManager', function () {
var VisitorManager = function () {
"use strict";
// ...
};
VisitorManager.prototype.hasExistingChat = function () {
// ...
};
//expose globally
this.VisitorManager = VisitorManager;
//return AMD module
return VisitorManager;
});
要全局公开你的模块,你需要在全局对象中注册它。
在浏览器中,全局对象是window
:
window.VisitorManager = VisitorManager;
在Node.js环境中,全局对象被称为GLOBAL
:
GLOBAL.VisitorManager = VisitorManager;
要在遗留环境和RequireJS中使用该类,您可以使用以下技巧:
(function() {
var module = function() {
var VisitorManager = function() {
"use strict";
// ...
};
// Return the class as an AMD module.
return VisitorManager;
};
if (typeof define === "function" && typeof require === "function") {
// If we are in a RequireJS environment, register the module.
define('VisitorManager', module);
} else {
// Otherwise, register it globally.
// This registers the class itself:
window.VisitorManager = module();
// If you want to great a global *instance* of the class, use this:
// window.VisitorManager = new (module())();
}
})();
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 正在全局范围中查找JavaScript函数
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 全局对象是属于哪个类的对象
- Javascript全局onclick监听器
- 从Javascript方法返回全局变量
- 访问jsrender模板中的全局javascript变量并更新它
- javascript无法重新定义函数内部的全局对象
- javascript 中的全局函数
- cordova:例外:财产'requestFileSystem'的[对象全局]不是函数
- 全局安装gull后出错
- AngularJS中的封装窗口全局变量
- 全局标志仅与第一个匹配项匹配的Regexp
- javascript隐式全局变量
- Javascript-在哪里放置常量,全局或本地
- 当不在RequireJS环境中时,全局暴露AMD模块
- 在Webpack构建中使用一个暴露全局变量的脚本
- Grunt构建没有暴露我需要的全局