4

我想编写一个可以在 node.js 服务器和浏览器之间重用的可移植模块。

是模块化的东西阻止了我。我正在阅读http://caolanmcmahon.com/posts/writing_for_node_and_the_browser/它看起来很简单,但是让 tsc 生成类似的东西可能吗?

4

1 回答 1

5

如果您以 CommonJS / AMD 样式编写 TypeScript(即每个文件都是一个模块),您可以要求编译器输出 CommonJS(对于 nodejs 服务器)和 AMD(对于浏览器,使用 requires.js)。

所以你的模块文件看起来像这样(没有模块声明)

我的模块.ts

exports class MyClass {
    constructor (private id: number) {
    }

    // ... etc
}

您将使用以下编译器命令来获取输出...

对于 nodejs 或浏览器(推荐)

tsc --module umd MyModule.ts

对于nodejs

tsc --module commonjs MyModule.ts

对于浏览器(使用 requires.js)

tsc --module amd MyModule.ts

编译输出的唯一区别是服务器代码将使用 CommonJS 导入语句来加载模块,而浏览器代码将调用 requires。

于 2012-10-29T08:48:45.357 回答