ECMAScript 2015 (ES6) и последующие версии
Node.js построен на основе современных версий V8. Поддерживая актуальность последних релизов этого движка, мы обеспечиваем своевременное предоставление разработчикам Node.js новых функций из спецификации JavaScript ECMA-262, а также постоянные улучшения производительности и стабильности.
Все функции ECMAScript 2015 (ES6) разделены на три группы: shipping
, staged
и in progress
:
- Все функции
shipping
, которые V8 считает стабильными, включеныпо умолчанию в Node.js
иНЕ
требуют никаких флагов времени выполнения. - Функции
staged
, которые являются почти завершенными функциями, но не считаются стабильными командой V8, требуют флага времени выполнения:--harmony
. - Функции
in progress
могут быть активированы индивидуально с помощью соответствующего флага harmony, хотя это крайне не рекомендуется, за исключением целей тестирования. Примечание: эти флаги предоставляются V8 и могут потенциально измениться без какого-либо уведомления о снятии с поддержки.
Какие функции поставляются с той или иной версией Node.js по умолчанию?
Веб-сайт node.green предоставляет отличный обзор поддерживаемых функций ECMAScript в различных версиях Node.js, основанный на таблице совместимости kangax.
Какие функции находятся в разработке?
В движок V8 постоянно добавляются новые функции. В целом, ожидайте, что они появятся в будущем релизе Node.js, хотя сроки неизвестны.
Вы можете перечислить все функции в разработке, доступные в каждом релизе Node.js, просмотрев аргумент --v8-options
. Обратите внимание, что это неполные и, возможно, нерабочие функции V8, поэтому используйте их на свой страх и риск:
node --v8-options | grep "in progress"
У меня настроена инфраструктура для использования флага --harmony. Следует ли его удалить?
Текущее поведение флага --harmony
в Node.js заключается во включении только функций staged
. В конце концов, теперь он является синонимом --es_staging
. Как упоминалось выше, это завершенные функции, которые еще не считаются стабильными. Если вы хотите обезопасить себя, особенно в производственных средах, подумайте об удалении этого флага времени выполнения, пока он не будет включен по умолчанию в V8 и, следовательно, в Node.js. Если вы оставите его включенным, вам следует быть готовым к тому, что дальнейшие обновления Node.js могут нарушить ваш код, если V8 изменит свою семантику, чтобы более точно следовать стандарту.
Как узнать, какая версия V8 поставляется с определённой версией Node.js?
Node.js предоставляет простой способ вывести список всех зависимостей и соответствующих версий, поставляемых с конкретным бинарным файлом, через глобальный объект process
. В случае с движком V8, введите следующее в вашем терминале, чтобы получить его версию:
node -p process.versions.v8