Skip to content

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, поэтому используйте их на свой страх и риск:

sh
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, введите следующее в вашем терминале, чтобы получить его версию:

sh
node -p process.versions.v8