如何从普通JavaScript访问AMD模块(“定义”)?

时间:2018-10-17 07:40:07

标签: javascript typescript

我制作了一个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;
}

1 个答案:

答案 0 :(得分:2)

看来您那里有一个AMD module,因此如果您还没有使用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是模块中导出的类的名称。