【问题标题】:ECMAScript 6 features available in Node.js 0.12Node.js 0.12 中提供的 ECMAScript 6 功能
【发布时间】:2016-02-20 17:24:53
【问题描述】:

Node.js (0.12) 的新稳定版本最近登陆了升级的 Google v8 JavaScript 引擎,v3.28.73

目前 Node.js 中存在哪些 ECMAScript 6 功能,但未使用 --harmony 标志?

我检查了几个声称列出 ES 6 功能的网站,但它们似乎都已过时 - 最突出的是 this table更新: 现在已更新为当前的 Node.js从 0.12 开始的状态),因为其中一些功能被列为需要--harmony 标志,而我发现其中一些功能默认启用(地图、集合、符号等)。 更新Node specific tables 现已提供

此外,试图通过谷歌搜索此信息纯粹是为了 v8 引擎提供了最新的信息 - 当前的 v8 版本是 4.2.*,这远远领先于 Node.js 使用的版本。

我希望这个问题(及其答案)将成为对 Node.js 开发人员现在可用的 ES 6 功能的全面总结。

我目前知道的 Node.js 0.12 中启用的 ES 6 功能:

  • 地图、集合 / WeakMaps、WeakSets
  • 符号
  • Object.observe
  • 承诺
  • 号码
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • .EPSILON
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • 数学
    • .clz32
    • .imul
    • .sign
    • .log10
    • .log2
    • .log1p
    • .expm1
    • .cosh
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot

【问题讨论】:

  • “我希望这个问题(及其答案)将成为关于 Node.js 开发人员现在可以使用哪些 ES 6 功能的全面总结。” - 机会是不是它只会变得杂乱无章……就像所有其他资源一样过时!除非您 1) 自我回答和 2) 花时间将其他答案整理到您的答案中。如果您准备好做这项工作,那么在博客中做可能更合适。
  • 或者直接切换到io.js(它附带了一个更新的V8版本)并密切关注ES6 on io.js page
  • 精选的 ES6 兼容性表:kangax.github.io/compat-table/es6
  • @JonathanLonowski 很有趣,奇怪的是我找不到关于节点 0.12 的问题/公关。 编辑:提交了issue
  • @RobertRossmann - 任何人都可以拥有博客。我不怀疑你的目标。只是我认为这不会奏效......除非有人(即>>你>努力

标签: javascript node.js v8 ecmascript-6


【解决方案1】:

不带--harmony 标志的功能:

我认为这就是没有--harmony 标志的所有内容。

带有--harmony 标志的功能:

我想就是这样。也许如果我忘记了什么 - 我稍后会将它添加到列表中。

【讨论】:

  • 这正是我希望得到的答案——干净,并带有文档/示例的链接!在--harmony 标志下列出功能的额外积分。:)
  • 字符串模板是否有--harmony?如后面的勾号${varname} 字符串语法?
  • @Sukima Node v0.12 不支持template strings,也没有--harmony 标志,也没有它。但是iojs 无需任何标志即可支持它们。
  • nodejs 是否在任何地方都记录了这一点?它非常有用。
  • @JonRed 也许您的运行因其他原因而失败,而不是因为常数。我刚刚尝试过,我的跑步效果很好。
【解决方案2】:

ES6 功能分阶段渗透到 Node。 Node 使用 Google 的 V8 作为 JavaScript 引擎。 Node 支持的功能意味着它首先必须在 V8 中实现,然后 Node 团队必须将其合并到 Node.js 中。

Google 团队大约每六周发布一个新版本的 V8,然后由 Node 团队来使用它。

手动整理的语言功能列表很不错,但很快就会过时。 Node 0.12 不再是那种不断变化的版本,但通常在推出新版本的 Node 后,手动管理的列表就会过时。

这里有两种替代方法可以检查 Node 版本支持的功能,而不依赖于静态列表。如需进一步阅读和更详细的使用示例,您可以查看"How to check if Node.js supports ES 6 language feature"

#1 简单 - 兼容性表

动态生成的列表依赖于小测试来确认语言功能的存在,从而更好地保持最新状态。一个这样的流行列表是 kangax.github.io/compat-table/es6/。我们只对 Node 特性感兴趣,所以你可以使用

http://node.green

利用与 kangax 网站相同的数据。

#2 Hard - 回溯 V8 版本

Node 使用 V8 引擎,因此确定 Node 中包含的 V8 版本告诉我们支持哪些 ES6 语言特性。您可以通过node -p process.versions.v8 了解 Node 中捆绑了哪个版本的 V8。

$ node -p process.versions.v8
4.6.85.31

然后使用 Google 的 V8 项目资源,您可以找到每个版本中实现了哪些功能。 V8 项目保留了一个issue tracker,您可以在其中找到标有 harmony 标签的 ES6+beyond 功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-24
    • 2014-10-04
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多