【问题标题】:How can I use ES7 in nodejs?如何在 nodejs 中使用 ES7?
【发布时间】:2017-10-17 02:06:44
【问题描述】:

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

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

感谢任何帮助。

【问题讨论】:

  • 您是真的在谈论 ES7 (ES2016)(如果您现在不知道这到底是什么意思,请阅读标签说明)还是在谈论实验性功能(接下来是 ES)?
  • 谢谢菲利克斯,我已经编辑过了。

标签: javascript node.js ecmascript-2016


【解决方案1】:

注意:这个问题明确是关于 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 更新

回答 cmets 的问题,async/await 是 ES2017 (ES8) 的特性,而不是 ES2016 (ES7) 的特性。见:

  • 规范:ECMAScript 最新草案 (ECMA-262) 该规范中“异步函数”的定义。
  • 状态:草稿
  • 注释:ES2017 中的初始定义。

Node 中的异步/等待

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

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

更多信息见:

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

或者在语法稍有不同的情况下使用基于生成器的方法,例如 co 或 Bluebird 协程:

查看这些答案了解更多信息:

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

【讨论】:

  • async/await 功能怎么样?
  • @MajidParvin:这仍然是实验性的(不是 ES7 的一部分)将于今年与 ES2017 一起发布。
  • @MajidParvin async/await 是 ES2017 (ES8) 的一个特性——而不是这个问题所涉及的 ES2016 (ES7)。查看更新的答案 - 我添加了关于 ES2017 和 async/await 的信息。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    node --harmony server.js
    

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 2016-11-12
      • 2016-04-14
      • 1970-01-01
      • 2016-05-17
      • 2017-05-28
      • 1970-01-01
      • 2017-12-08
      • 2015-11-29
      相关资源
      最近更新 更多