如何在nodejs中使用ES7?

时间:2017-05-17 14:31:14

标签: node.js ecmascript-7

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

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

感谢任何帮助。

3 个答案:

答案 0 :(得分:21)

注意:此问题明确涉及ES2016(ES7)。请参阅下面的ES2017(ES8)更新。

ES7只有两个主要特征:

  1. Array.prototype.includes
  2. **(指数运算符)
  3. 有关更多信息,请参阅Mozilla开发网络:

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

    • 5.0 with harmony flag,6.0 with without flag(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中的初始定义。
    •   
    节点中的

    async / await

    您可以在:

    中使用async / await
    • 带有--harmony标记的节点7.0
    • 节点7.6没有任何标记

    有关详细信息,请参阅:

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

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

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

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

答案 1 :(得分:6)

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

答案 2 :(得分:3)

你需要使用--harmony flag例如:

node --harmony server.js