我想编写一个可以在 node.js 服务器和浏览器之间重用的可移植模块。
是模块化的东西阻止了我。我正在阅读http://caolanmcmahon.com/posts/writing_for_node_and_the_browser/它看起来很简单,但是让 tsc 生成类似的东西可能吗?
我想编写一个可以在 node.js 服务器和浏览器之间重用的可移植模块。
是模块化的东西阻止了我。我正在阅读http://caolanmcmahon.com/posts/writing_for_node_and_the_browser/它看起来很简单,但是让 tsc 生成类似的东西可能吗?
如果您以 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。