我应该编译哪个版本的JavaScript?

Gri*_*ort 9 javascript v8 node.js transpiler typescript

假设我正在使用编译为JavaScript的语言编写NodeJS项目,例如TypeScript.随着打字稿(或使用巴贝尔其他的事情)我有编译我的代码为JavaScript的任何版本的选项,无论是ES3,ES5,ES6,ES2017,等.

显然,如果我在编写客户端的东西,我会坚持使用早期版本ES5来维护用户的兼容性.但是,由于我正在为最新版本的NodeJS编写服务器端的东西,我可以使用任何这些选项.我想知道的是,我应该使用哪个版本来提供最佳性能?

NodeJS的解释器V8根据源代码的编写方式提供了不同的优化,因此我认为选择一个或另一个可能会带来不同的好处.一方面,您会认为选择较旧版本的JS会更好,因为它已经存在更长时间并且有更多时间进行优化.另一方面,编译到更高版本的JS会产生更清晰的代码,并依赖于更新的可用功能,这些功能也可能有所帮助.

任何想法/反馈将不胜感激!

Raw*_*lus 5

我确实认为这个问题主要是基于意见的,但是..我认为不应仅仅因为有一部分可能被认为是主观的而忽略有效的问题。因此,虽然您应该对此持保留态度(因为最终,这是您的应用程序和您选择使用的版本),但我确实希望这能推动您走向正确的方向:


我个人相信,你应该编译到最新的 ES 版本。为什么?
首先,我们来回顾一下事实:

  • 兼容性并不是什么大问题。许多较旧的功能可以进行填充以实现兼容性。
  • 正如 @Ry- 有效指出的那样,当某个功能转换为较旧的 JS 版本时,它的行为可能会有所不同,通常以您可能没有注意到或期望的方式。
  • 每个 ES 版本都会有一些生活质量更改、错误修复和代码改进
  • 提供新的有用功能

现在,这更多的是个人意见,但我坚持这一点:

  • 我认为我们作为开发人员不应该回顾过去并使用过时的或完全不起作用的技术并将我们的头撞到墙上。与其抱怨其他人不想适应,不如成为运动的一部分并让其他人适应。我并不是说您的网站不应该对旧浏览器“万无一失”,恰恰相反,只是不要降低到他们的水平并因此限制自己。顺其自然!

总而言之,除非您有非常特殊的原因,为什么不应该使用最新版本,否则请始终使用最新版本(LTS,而不是最新测试版)。