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