ECMAScript 2015 (ES6) и выше
Node.js строится на современных версиях V8. Базируясь на последних выпусках этого движка, мы обеспечиваем поддержку новых функций из спецификации JavaScript ECMA-262 своевременно предоставляя их разработчикам Node.js, а также улучшая производительность и стабильность.
Вся функциональность ECMAScript 2015 (ES6) разделена на три группы: поставляемая (shipping), подготовленная (staged) и в процессе (in progress):
- Вся поставляемая функциональность, которую V8 считает стабильной, включена по умолчанию в Node.js и НЕ нуждается в дополнительных конфигурациях и флагах.
- Подготовленная функциональность, это список почти готовых внедрений, который еще не утвержден
командой V8 как стабильной, и требует дополнительный флаг
--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 состоит в том, чтобы включать только подготовленную функциональность.
В конце концов, теперь это синоним --es_staging
. Как упомянуто выше, это законченные функции, которые еще не считаются
стабильными. Если вы беспокоитесь о безопасности использования таких функций, особенно в производственных средах, рассмотрите
возможность выключения этого флага до тех пор, пока требуемые функции не перейдут в стадию "по умолчанию" на V8 и, следовательно,
на Node.js. Если вы оставите его включенным, вы должны быть готовы к дальнейшим обновлениям Node.js, которые могут сломать ваш код,
если V8 изменит свою семантику, чтобы более точно следовать стандарту.
Как мне узнать, какая версия V8 поставляется с определенной версией Node.js?
Node.js предоставляет простой способ перечисления всех зависимостей и соответствующих версий, которые поставляются
с конкретным бинарным файлом через глобальный объект process
. В случае с движком V8 введите следующую команду в
терминале, чтобы узнать его версию:
node -p process.versions.v8