如何在 nodejs 中使用 ES7?
Posted
技术标签:
【中文标题】如何在 nodejs 中使用 ES7?【英文标题】:How can I use ES7 in nodejs? 【发布时间】:2017-10-17 02:06:44 【问题描述】:如何在 nodejs 中使用 ES7 (ECMAScript 2016)? 如何在生产中使用它?
在哪个版本的节点中,我不需要使用任何模块来做到这一点?
感谢任何帮助。
【问题讨论】:
您是真的在谈论 ES7 (ES2016)(如果您现在不知道这到底是什么意思,请阅读标签说明)还是在谈论实验性功能(接下来是 ES)? 谢谢菲利克斯,我已经编辑过了。 【参考方案1】:注意:这个问题明确是关于 ES2016 (ES7)。请参阅下面的 ES2017 (ES8) 更新。
ES7 只有两个主要特性:
Array.prototype.includes
**
(求幂运算符)
有关更多信息,请参阅 Mozilla 开发网络:
Web/javascript/Reference/Global_Objects/Array/includes Web/JavaScript/Reference/Operators/Arithmetic_Operators#Exponentiation_(**)根据 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求幂是添加到 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 的夜间版本。
有关发布时间表的更多信息 - 请参阅:
https://github.com/nodejs/LTS要下载其他版本 - 请参阅:
https://nodejs.org/en/download/ES2017 更新
回答 cmets 的问题,async/await 是 ES2017 (ES8) 的特性,而不是 ES2016 (ES7) 的特性。见:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function规范:ECMAScript 最新草案 (ECMA-262) 该规范中“异步函数”的定义。 状态:草稿 注释:ES2017 中的初始定义。
Node 中的异步/等待
您可以在以下位置使用 async/await:
带有--harmony
标志的节点 7.0
没有任何标志的节点 7.6
更多信息见:
http://node.green/#ES2017-features-async-functions在你没有原生支持 async
和 await
的地方你可以使用 Babel:
或者在语法稍有不同的情况下使用基于生成器的方法,例如 co
或 Bluebird 协程:
查看这些答案了解更多信息:
try/catch blocks with async/await node.js ~ constructing chained sequence of Promise resolves How to run Generator Functions in Parallel? node.js ~ constructing chained sequence of Promise resolves Using async/await + Bluebird to promisifyAll jQuery: Return data after ajax call success它们包含有关兼容性和可能的解决方法的更多信息。
【讨论】:
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
【讨论】:
以上是关于如何在 nodejs 中使用 ES7?的主要内容,如果未能解决你的问题,请参考以下文章