Edit on GitHub

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
Вгору