ECMAScript 2015 (ES6) та вище
Node.js побудований на сучасних версіях V8. Ми певні в тому, що новий функціонал зі специфікації JavaScript ECMA-262 постачається Node.js–розробникам поступово, для подальшого підвищення швидкодії та стабільності, оскільки використовуємо найсвіжіші релізи цього рушія.
Весь ECMAScript 2015 (ES6) функціонал поділяється на три групи: доставлені, підготовлені та у процесі:
- Весь доставлений функціонал, який вважається у V8 стабільним, увімкнений у Node.js за замовчуванням і НЕ потребує будь–якого флага для оточення.
- Підготовлений функціонал, що містить майже готові нововведення, що розглядаються командою V8 як нестабільні, потребують флагу:
--harmony
. - Функціонал у процесі може вмикатись окремо через власні 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
. Як згадано вище, цей функціонал є завершеним, але ще не вважається стабільним. Якщо ви хочете використовувати його безпечно, особливо на production–середовищах, краще видалити цей флаг з оточення, поки від не буде постачатись з V8 і, відповідно, у Node.js за замовчування. Якщо ви залишите його увімкненим, вам слід бути готовими до можливих оновлень Node.js, що зламають ваш код, якщо зміни у V8, їхня семантика буде більш точно відповідати стандарту.
Як я можу дізнатись яка версія V8 постачається з певною версією Node.js?
Node.js надає простий спосіб для отримання списку залежностей та їх версій, що постачаються з певним бінарником через глобальний об’єкт process
. У випадку з рушієм V8, введіть це в терміналі і ви отримаєте його версію:
node -p process.versions.v8