“节点-和谐”是做什么的?

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

node --harmony app.js

这个和谐标志是什么? 它能做什么? 为什么没有它应用程序就不能运行?

我尝试查看节点命令行选项(node --help) ,但它也没有提供任何细节。节点文档也帮不上忙。

81937 次浏览

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

键入 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

因此,--harmony是一个快捷方式,使所有的和谐功能(如 --harmony_scoping--harmony_proxies,等等)从 这篇博文,似乎和谐使新的 ECMAScript 6功能的语言。您的文件不能在没有和谐的情况下运行的原因是,app.js可能使用了新 ECMAScript 6标准中的非向后兼容特性(如块作用域、代理、集合、映射等)

正如节点文档中提到的,—— Harmony 标志支持 ES6的非稳定但很快就会稳定的特性

Node.js 上的—— Harmony 标志的当前行为是仅启用分段特性。毕竟,它现在是—— es _ stage 的同义词。如上所述,这些已经完成的特性还没有被认为是稳定的。如果您希望采取安全措施,尤其是在生产环境中,那么可以考虑删除这个运行时标志,直到它在 V8上默认发布,并因此在 Node.js 上发布。如果您保持这种状态,那么您应该为进一步的 Node.js 升级做好准备,以便在 V8更改其语义以更紧密地遵循标准时破坏您的代码。

如果您想在旧版本的 nodejs 中运行 ECMAScript 6特性,可以使用—— Harmony 标志。 最新版本的节点支持 ES6,因此不需要—— Harmony 标志

所有 ECMAScript 2015(ES6)特性分为三组,分别用于发布、分阶段和进行中的特性:

  • V8认为稳定的所有运行特性 都由 在 Node.js 上默认,不需要任何类型的运行时标志。

  • 阶段性特性 ,它们是几乎完成的特性,但不是 V8团队认为稳定,需要一个运行时标志: —— 和谐

  • 正在进行的特性 可以通过它们的 各自的和谐旗帜,虽然这是非常不鼓励,除非 注意: 这些标志由 V8公开,并且将 可能在没有任何弃权通知的情况下更改

资料来源: http://nodejs.org/en/docs/es6/”rel = “ norefrer”> https://nodejs.org/en/docs/es6/