我想编写一个可在node.js服务器和浏览器之间重用的可移植模块。
这是阻止我的模块化事物。我正在阅读http://caolanmcmahon.com/posts/writing_for_node_and_the_browser/并且它看起来很简单,但是让tsc生成这样的东西呢?
答案 0 :(得分:5)
如果以CommonJS / AMD风格编写TypeScript(即每个文件都是模块),您可以要求编译器输出CommonJS(用于nodejs服务器)和AMD(用于浏览器,使用requires.js)。 / p>
所以你的模块文件看起来像这样(没有模块声明)
MyModule.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 import语句加载模块,浏览器代码将调用require。