我编写了一个在 Node 上运行的新应用程序。代码只会在节点服务器上运行,因此浏览器兼容性不是问题。代码库是用 TypeScript 编写的。
在我的tsconfig.json
中,我为编译器设置了以下选项:
{
"include": [
"src/**/*"
],
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"sourceMap": true,
"noEmitOnError": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true
}
}
请注意,我的目标是 ES6,但导出 CommonJS 模块!
据我测试,tsc(版本2.1.4)生成的代码在Node(版本6.9.1)上运行良好。此外,查阅node.green表明,大多数ES5和ES6功能都是在Node中实现的。
可悲的是,我找不到任何关于应该与 Node 一起使用的 JavaScript 版本的信息或官方建议。据我所知,没有什么能阻止我使用 ES6。
我的问题:我可以可靠地将生成的 ES6 代码与 Node 一起使用吗?
所有 ES6 实现的细微差别都可以描述为功能。这就是node.green所做的。
除了 ES6 模块,Node 6+ 完全(99% 兼容性,有一些小差异)支持 ES6。
所以不,应该没有意想不到的问题。但是,如果将 ES6 特定的代码转换为 ES5,则可能会有一个,因此另一方面,ES5 目标可能会导致麻烦。
Node.js网站必须说的:
所有 ECMAScript 2015 (ES6) 功能部件都分为三组,分别是已交付、暂存和正在进行的特性:
- V8 认为稳定的所有交付功能在 Node 上默认打开.js并且不需要任何类型的运行时标志。
- 分阶段功能,即 V8 团队认为不稳定的几乎完成的功能,需要一个运行时标志:--harmony。
- 进行中的功能可以通过其各自的和谐标志单独激活,尽管除非出于测试目的,否则强烈建议不要这样做。注意:这些标志由 V8 公开,并且可能会更改,而不会发出任何弃用通知。
在此处阅读更多内容