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标准中的非向后兼容功能(如块作用域,代理,集合,映射等)
正如 Node 文档中提到的,--harmony 标志启用了 ES6 的非稳定但很快就会稳定的特性
Node.js 上 --harmony 标志的当前行为是仅启用暂存功能。毕竟,它现在是 --es_staging 的同义词。如上所述,这些是尚未被认为稳定的已完成功能。如果您想安全运行,尤其是在生产环境中,请考虑删除此运行时标志,直到它默认在 V8 上发布,因此在 Node.js 上发布。如果您保持启用此功能,您应该准备好进行进一步的 Node.js 升级,如果 V8 更改其语义以更接近标准,则会破坏您的代码。
所有 ECMAScript 2015 (ES6) 功能分为三组,分别用于发布、暂存和正在进行的功能:
V8 认为稳定的所有发布功能在 Node.js 上默认打开,并且不需要任何类型的运行时标志。
阶段性功能,即 V8 团队认为不稳定的即将完成的功能,需要运行时标志: -- Harmony。
进行中的功能可以通过各自的和谐标志单独激活,尽管除非出于测试目的,否则强烈建议不要这样做。注意:这些标志由 V8 公开,并且可能会在没有任何弃用通知的情况下发生更改。
来源: https: //nodejs.org/en/docs/es6/