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

时间:2018-08-27 08:27:46

标签: javascript node.js typescript v8 transpiler

比方说,我正在用一种可编译为JavaScript的语言(例如TypeScript)编写NodeJS项目。使用TypeScript(或其他使用Babel的工具),我可以选择将代码编译为任何版本的JavaScript,例如ES3ES5ES6ES2017,等

很明显,如果我在编写客户端程序,我会坚持使用ES5之类的早期版本来维护用户的兼容性。但是,由于我正在为最新版本的NodeJS写一些服务器端内容,因此可以使用这些选项中的任何一个。我想知道的是,我应该使用哪个版本来提供最佳性能?

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

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

1 个答案:

答案 0 :(得分:4)

我确实认为这个问题主要是基于观点的,但是..我不认为一个有效的问题应该被忽略,仅因为其中一部分可能被认为是主观的。因此,尽管您应该一筹莫展(因为最终,这是您的应用程序以及您选择使用的版本),但我确实希望这可以向正确的方向推一下:


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

  • 兼容性不是什么大问题。许多较旧的功能can be polyfilled都是为了兼容。
  • 正如@ Ry-有效指出的那样,当功能转换为较旧的JS版本时,它的行为可能会有所不同,通常是您甚至没有注意到或期望的方式。
  • 每个ES版本都有一些QoL更改,错误修正和代码改进
  • 提供新的有用功能

现在,这更多是个人观点,但我坚持:

  
      
  • 我不认为我们作为开发人员应该回头并使用过时的或彻头彻尾的非功能性技术,以应对这种情况。   壁。与其抱怨别人不想适应,不如说   运动的一部分,并使他人适应。我不是说你的网站   对于旧的浏览器不应该“万无一失”,相反,   不要因此而跌落并限制自己。走   顺其自然!
  •   

因此,总而言之,除非您有非常特殊的理由,否则为什么不使用最新版本,请始终使用最新版本(LTS,而不是最新Beta)。