gpt4 book ai didi

javascript - 不在 RequireJS 环境中时全局公开 AMD 模块

转载 作者:行者123 更新时间:2023-11-29 19:20:40 26 4
gpt4 key购买 nike

我正在尝试将经典的 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 - 不在 RequireJS 环境中时全局公开 AMD 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33200396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com