`node --harmony`有什么作用?

jsa*_*nen 176 javascript node.js

节点应用程序要求我运行带有和声标志的节点,例如:

node --harmony app.js
Run Code Online (Sandbox Code Playgroud)

这和谐旗帜是什么?它做了什么以及为什么没有它可以运行应用程序?

我试过查看节点命令行选项(node --help),但它也没有提供任何细节.节点文档也没有任何帮助.

the*_*ham 131

man node在和声旗帜上打字有这个:

 --harmony_typeof (enable harmony semantics for typeof)
       type: bool  default: false
 --harmony_scoping (enable harmony block scoping)
       type: bool  default: false
 --harmony_modules (enable harmony modules (implies block scoping))       
        type: bool  default: false
 --harmony_proxies (enable harmony proxies)       
        type: bool  default: false
 --harmony_collections (enable harmony collections  (sets,  maps,  andweak maps))
       type: bool  default: false 
 --harmony (enable all harmony features (except typeof))
       type: bool  default: false
Run Code Online (Sandbox Code Playgroud)

--harmony是启用所有和声功能的快捷方式(例如--harmony_scoping,--harmony_proxies等等).在这篇博文中,似乎和谐使语言中的新ECMAScript 6功能成为可能.您的文件无法在没有和谐的情况下运行的原因是因为app.js可能使用新ECMAScript 6标准中的非向后兼容功能(如块作用域,代理,集合,映射等)

  • 值得一提的是[和谐是用于新ECMAscript的名称](https://mail.mozilla.org/pipermail/es-discuss/2008-August/006837.html).Harmony名称空间包含[该语言的提议](http://wiki.ecmascript.org/doku.php?id=harmony:harmony)的功能. (54认同)
  • @jsalonen没有一个,但你可以做`> node --v8-options`来获取这里提到的东西 (3认同)

小智 6

如果要在旧版本的nodejs中运行ECMAScript 6功能,可以使用--harmony标志。最新版本的节点支持ES6,因此不需要--harmony标志


Eli*_*nti 5

它在节点 js 中启用和声模块:http ://wiki.ecmascript.org/doku.php? id= harmony:modules

  • 模块只是和谐的特征之一。 (3认同)

Ign*_*rew 5

正如 Node 文档中提到的,--harmony 标志启用了 ES6 的非稳定但很快就会稳定的特性

Node.js 上 --harmony 标志的当前行为是仅启用暂存功能。毕竟,它现在是 --es_staging 的同义词。如上所述,这些是尚未被认为稳定的已完成功能。如果您想安全运行,尤其是在生产环境中,请考虑删除此运行时标志,直到它默认在 V8 上发布,因此在 Node.js 上发布。如果您保持启用此功能,您应该准备好进行进一步的 Node.js 升级,如果 V8 更改其语义以更接近标准,则会破坏您的代码。


Ara*_*vin 5

所有 ECMAScript 2015 (ES6) 功能分为三组,分别用于发布、暂存和正在进行的功能:

  • V8 认为稳定的所有发布功能在 Node.js 上默认打开,并且不需要任何类型的运行时标志。

  • 阶段性功能,即 V8 团队认为不稳定的即将完成的功能,需要运行时标志: -- Harmony

  • 进行中的功能可以通过各自的和谐标志单独激活,尽管除非出于测试目的,否则强烈建议不要这样做。注意:这些标志由 V8 公开,并且可能会在没有任何弃用通知的情况下发生更改。

来源: https: //nodejs.org/en/docs/es6/