Что делает 'узел -- гармония'?
приложение узла потребовало от меня запустить узел с флагом гармонии, например:
node --harmony app.js
что это за флаг гармонии? Что он делает и почему приложение не может работать без него?
Я попытался заглянуть в параметры командной строки узла (node --help), но он также не предоставляет никаких подробностей. Документы узла также не помогли.
4 ответов:
введя
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 (например, область блока, прокси, наборы, карты и т. д.)
Он включает модули гармонии в узле js: http://wiki.ecmascript.org/doku.php?id=harmony:modules
Как упоминалось в документации узла, -- harmony флаг позволяет не стабильные, но скоро стабилизированные функции ES6
текущее поведение флага -- harmony на узле.js должен включать только поэтапные функции. В конце концов, теперь это синоним --es_staging. Как упоминалось выше, это завершенные функции, которые еще не считались стабильными. Если вы хотите играть безопасно, особенно в производственных средах, рассмотрите возможность удаления этого флага среды выполнения, пока он не будет отправлен по умолчанию на V8 и, следовательно, на узел.js. Если вы держите это включенным, вы должны быть готовы к дальнейшему узлу.JS обновляет, чтобы сломать ваш код, если V8 изменяет свою семантику, чтобы более точно следовать стандарту.
Если вы хотите запустить функции ECMAScript 6 в более старой версии nodejs, вы можете использовать флаг --harmony. Последняя версия node поддерживает ES6, поэтому нет необходимости в -- harmony flag
Comments