我如何在 nodejs 中使用 ES7?

How can I use ES7 in nodejs?

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

在哪个版本的节点中,我不需要使用任何模块来执行此操作?

感谢任何帮助。

您需要使用 --harmony 标志,例如:

node --harmony server.js

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

注意:这个问题明确是关于 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 标志,那么你至少可以使用 Node 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)。参见:

  • Specification: ECMAScript Latest Draft (ECMA-262) The definition of 'async function' in that specification.
  • Status: Draft
  • Comment: Initial definition in ES2017.

async/await 在节点

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

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

有关详细信息,请参阅:

在您没有原生支持 asyncawait 的地方,您可以使用 Babel:

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

查看这些答案以获取更多信息:

  • jQuery: Return data after ajax call success

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