如何在nodejs中使用ES7?

Maj*_*vin 21 node.js ecmascript-7

如何在nodejs中使用ES7(ECMAScript 2016)?我怎样才能在生产中使用它?

在哪个版本的节点中,我不需要使用任何模块来做到这一点?

任何帮助表示赞赏.

rsp*_*rsp 24

注意:这个问题是关于ES2016(ES7)的.请参阅以下ES2017(ES8)的更新.

ES7只有两个主要特征:

  1. Array.prototype.includes
  2. ** (取幂运算符)

有关更多信息,请参阅Mozilla开发网络:

根据node.green,它们分别在Node中可用:

  • 带有和声标志的5.0和没有标志的6.0(Array.prototype.includes)
  • 6.5带和声标志,7.0带无标志(取幂)

看到:

取幂是添加到Node的最后一个ES7功能,因此如果要使用没有标志的所有ES7功能,则至少需要Node 7.0.如果您可以使用该--harmony标志,那么您至少可以使用节点6.5.

6.x版本是LTS(长期支持),因此您可能希望它超过7.x但您需要使用该标志来使用ES7功能.

在撰写本文时,Node的当前版本是:

  • v6.10.3 LTS(推荐大多数用户使用)
  • v7.10.0当前(最新功能)

v8.0 LTS将很快发布 - 目前你可以使用Node 8.0的每晚版本.

有关发布计划的更多信息 - 请参阅:

要下载其他版本 - 请参阅:

ES2017更新

回答评论中的问题,async/await是ES2017(ES8)的一个特性,而不是ES2016(ES7),因为这个问题是关于.看到:

  • 规范:ECMAScript最新草案(ECMA-262)该规范中"异步函数"的定义.
  • 状态:草稿
  • 评论:ES2017中的初始定义.

Node中的async/await

您可以在以下位置使用async/await:

  • 节点7.0带有--harmony标志
  • 节点7.6没有任何标志

有关详情,请参阅:

在您没有本机支持的地方async,await您可以使用Babel:

或者使用略有不同的语法,基于生成器的方法,如co或者Bluebird协同程序:

有关详细信息,请参阅这些答案

它们包含有关兼容性和可能的​​解决方法的更多信息.


小智 9

这个网站http://node.green/显示了不同版本的NodeJS与不同版本的ES标准的兼容程度.