На этой странице

Node.js собирается на современных версиях V8. Оставаясь в актуальном состоянии относительно последних релизов этого движка, мы гарантируем, что новые возможности из спецификации JavaScript ECMA-262 своевременно доходят до разработчиков на Node.js, а также непрерывные улучшения производительности и стабильности.

Все возможности ECMAScript 2015 (ES6) делятся на три группы — готовые к использованию (shipping), staged и в разработке (in progress):

  • Все возможности группы shipping, которые V8 считает стабильными, включены в Node.js по умолчанию и НЕ требуют каких-либо runtime-флагов.
  • Возможности группы staged — почти завершённые, но пока не признанные командой V8 стабильными — требуют runtime-флага --harmony.
  • Возможности группы in progress можно включать по отдельности соответствующим harmony-флагом, хотя это крайне не рекомендуется, кроме как для тестирования. Обратите внимание: эти флаги предоставляются самим V8 и могут измениться без какого-либо уведомления об устаревании.

Сайт node.green даёт отличный обзор поддерживаемых возможностей ECMAScript в различных версиях Node.js — на основе compat-table от kangax.

В движок V8 постоянно добавляются новые возможности. В целом можно ожидать, что они появятся в одном из будущих релизов Node.js, хотя сроки неизвестны.

Перечислить все возможности in progress, доступные в конкретном релизе Node.js, можно, отфильтровав вывод аргумента --v8-options. Учтите, что это незавершённые и, возможно, нерабочие возможности V8, так что используйте их на свой страх и риск:

Текущее поведение флага --harmony в Node.js — включать только возможности группы staged. По сути, теперь это синоним --es_staging. Как уже упоминалось, это завершённые возможности, которые пока не признаны стабильными. Если хотите перестраховаться, особенно в production-окружениях, подумайте о том, чтобы убрать этот runtime-флаг, пока возможности не войдут в V8 (а следовательно, и в Node.js) по умолчанию. Если оставите его включённым, будьте готовы к тому, что последующие обновления Node.js могут сломать ваш код, если V8 изменит семантику, чтобы точнее следовать стандарту.

Node.js даёт простой способ перечислить все зависимости и их версии, которые входят в конкретный бинарник, — через глобальный объект process. Чтобы узнать версию движка V8, выполните в терминале: