如何使用AMD和RequireJS

时间:2017-05-24 20:00:57

标签: javascript typescript

我在文件中有以下TypeScript类:bar.ts

export class Bar {
   log(message:string):void {
       console.log(message);
   }
}

在文件foo.ts中我有:

import { Bar } from "bar";

window.onload = () => {
   var foo = new Bar();
   foo.log("Hello World");
};

我正在编译:

lib: ["dom", "es2015.promise", "es2015"]
module: "amd"
declarationFiles: true
target: "ES5"
noImplicitAny: true
out: "test.js

如何实例化Bar类?不调用window.onload事件。以下是生成的代码:

define("bar", ["require", "exports"], function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var Bar = (function () {
        function Bar() {
        }
        Bar.prototype.log = function (message) {
            console.log(message);
        };
        return Bar;
    }());
    exports.Bar = Bar;
});

define("foo", ["require", "exports", "bar"], function (require, exports, bar_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    window.onload = function () {
        var foo = new bar_1.Bar();
        foo.log("Hello World");
    };
});

有没有办法从标准Ja​​vaScript引用Bar?我在HTML页面中包含了require.js,并且在页面加载时没有JavaScript错误。

这是问题的简化版本,但我需要使用导出,因为项目有许多类,每个类存储在单独的文件中,我需要将它们组合成一个文件。

1 个答案:

答案 0 :(得分:1)

您应该能够从常规JavaScript中引用Bar。尝试从requirejs data-main脚本中执行此操作。

在HTML中:

<script data-main="scripts/main" src="scripts/require.js"></script>

在scripts / main中:

requirejs(["bar"], function(bar) {});