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
Вверх