我如何在nodejs中使用ES7?

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

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

任何帮助表示赞赏。

注意:这个问题明确的是ES2016(ES7)。 请参阅ES2017(ES8)的更新。

ES7只有两个主要特点:

  1. Array.prototype.includes
  2. ** (指数运算符)

在Mozilla开发networking上查看更多信息:

  • networking/ JavaScript的/参考/ Global_Objects /arrays/包括
  • networking/ JavaScript的/参考/运营/ Arithmetic_Operators#幂_(**)

根据node.green,这些在Node中可用,分别是:

  • 5.0和谐标志和6.0没有标志(Array.prototype.includes)
  • 6.5和谐旗和7.0没有旗(幂指数)

看到:

幂指数是添加到节点的最后一个ES7function,所以如果您要使用所有ES7function而没有标志,那么您至less需要节点7.0。 如果你可以使用--harmony标志,那么你至less可以使用Node 6.5。

6.x版本是LTS(长期支持),因此您可能希望优先于7.x,但您需要使用ES7function的标志。

在写这篇文章的时候,当前版本的Node是:

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

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

有关发布时间表的更多信息,请参阅:

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

更新ES2017

回答这个问题,async / await是ES2017(ES8)的一个特性,而不是ES2016(ES7)。 看到:

  • 规格:ECMAScript最新草案(ECMA-262)该规范中“asynchronous函数”的定义。
  • 状态:草案
  • 评论:ES2017中的初始定义。

asynchronous/等待在节点

你可以在async / await中使用:

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

更多信息请参阅:

在你没有本地支持asyncawait你可以使用Babel:

或者使用稍微不同的语法,如co或Bluebird协程中的基于生成器的方法:

查看这些答案的更多信息:

  • 尝试/ catchasynchronous/等待块
  • node.js〜构造Promise链接序列parsing
  • 如何并行运行发生器function?
  • node.js〜构造Promise链接序列parsing
  • 使用async / await + Bluebird来promisifyAll
  • jQuery:Ajax调用成功后返回数据

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

有这个网站http://node.green/ ,它显示了不同版本的ES标准与不同版本的NodeJS的兼容性。

你需要使用–harmony标志,例如:

 node --harmony server.js