【问题标题】:How to access an AMD module ("define") from ordinary JavaScript?如何从普通 JavaScript 访问 AMD 模块(“定义”)?
【发布时间】:2021-05-02 00:43:23
【问题描述】:

我编写了一个 TypeScript 代码,编译如下:

define("Global/Global", ["require", "exports"], function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var Global = (function () {
        function Global() {
        }
        Global.transition_time = 200;
        return Global;
    }());
    exports.Global = Global;
});

现在,在经典的“script.js”中,我正在尝试 console.log() 的“transition_time”值。但它告诉我“未定义全球”。 我在控制台的全局函数中设置了一个断点,但它从未触发过。

编辑:

这是 Global 的 TypeScript 代码:

export class Global {
    static transition_time: number = 200;
}

【问题讨论】:

  • 现在,如果你也分享创建这个的打字稿代码会更好吗?你在某个地方需要这个模块吗?
  • 我添加了小 TS 代码,我尝试使用它:"require(["Global/Global"]);"没有任何结果。

标签: javascript typescript


【解决方案1】:

看起来您在那里有一个AMD module,因此如果您还没有使用 AMD 模块加载器,则需要使用 RequireJS 等 AMD 模块加载器。那么从script.js 访问你的模块的正确语法是这样的:

require(["Global/Global"], function(Global_module) {
    console.log(Global_module.Global.transition_time);
});

require 函数不会向全局命名空间添加任何内容;相反,您必须传递一个回调来接收您要求的模块并使用它做任何您想做的事情。注意Global_module.Global.transition_timeGlobal_module 是我给接收整个模块的变量的名称,Global 是模块内导出类的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    相关资源
    最近更新 更多