我如何在nodejs中使用ES7?
我如何在nodejs中使用ES7(ECMAScript 2016) ? 我如何在生产中使用它?
而在哪个版本的节点中,我不需要使用任何模块来做到这一点?
任何帮助表示赞赏。
注意:这个问题明确的是ES2016(ES7)。 请参阅ES2017(ES8)的更新。
ES7只有两个主要特点:
Array.prototype.includes
-
**
(指数运算符)
在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没有旗(幂指数)
看到:
- http://node.green/#ES2016-features-Array-prototype-includes
- http://node.green/#ES2016-features-exponentiation——operator
幂指数是添加到节点的最后一个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没有任何标志
更多信息请参阅:
在你没有本地支持async
, await
你可以使用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