Примечательные новые функции в Node 12

Node.js внешний интерфейс

предисловие

Через год Node.js 12 прибыл, как и было обещано, официально выпустив первуюCurrentВерсия.

В этом релизе есть такие вещи, как:

  • Обновление V8 приносит много приятных функций.
  • Улучшена скорость парсинга HTTP.
  • Скорость запуска значительно улучшена.
  • Улучшенные инструменты диагностической отчетности и анализа кучи.
  • Обновление модуля ЕСМ.

Релевантная информация:

Что такое ЛТС?

image.png

Если вы не понимаете стратегию выпуска долгосрочной поддержки Node.js, обязательно ознакомьтесь с ней.GitHub.com/node будет /Re....

На данный момент Node.js 6.x и 8.x прекратят поддержку LTS в конце 2019 года, поэтому обновите до 10.x как можно скорее.

Быстрый опыт

$ nvs add node/12
$ nvs use 12
$ node -v
v12.0.0

Подробнее см. в этой статье:Popular Science: использование nvs для управления локальными версиями Node.js

V8 обновлен до 7.4

В большинстве случаев нам не нужно беспокоиться о проблемах с производительностью и просто ждать обновления версии V8. (туман)

Это обновление версии также содержит несколько полезных функций:

В то же время я провел несколько внутренних тестов нашего Egg и обнаружил, что сериализация дает прирост производительности на 10-20%, что просто ужасно!

Поддержка новых функций ECMAScript

С обновлением V8 появилось много новых спецификаций ES. Список поддержки см.:node.green/

такой страшныйPrivate Class FieldsТакже работает:

class IncreasingCounter {
  #count = 0;
  
  get value() {
    console.log('Getting the current value!');
    return this.#count;
  }
  increment() {
    this.#count++;
  }
}

Улучшена скорость парсинга HTTP

Парсер HTTP по умолчанию переключен наllhttp, ужас улучшения производительности выглядит следующим образом:

image.png

Комментарии: Ужас.

Улучшение скорости запуска

пройти черезv8 code cache служба поддержки,Создавайте кеши кода для встроенных библиотек заранее во время сборкиЭто увеличивает начало запуска на 30%.
В то же время черезПовторное использование основного кеша процесса, рабочие потоки запускаются на 60% быстрее.

Комментарии: Ужас.

Workers Threads

Уже представлен в 10.xWorkers ThreadsФункция, включенная по умолчанию в 12.x, использовать не нужно--experimental-workerвключи. В то же время, основываясь на введении предыдущей статьи, скорость запуска также была значительно улучшена.

Связанное введение:medium.com/@TR Ott/u sin…

Диагностический отчет

Предусмотрена новая экспериментальная функция «Диагностический отчет», очень полезная функция.
Может использоваться для анализа таких проблем, как: сбои, проблемы с производительностью, утечки памяти, высокая загрузка ЦП и многое другое. видетьэта статья.

Комментарии: это тожеAliNodeОдин из предыдущих пунктов продажи.

Heap Dump

В прошлом, когда мы анализировали проблему, нам приходилось вручную устанавливать соответствующую библиотеку классов или использовать AliNode.

Эта функция встроена в 12.x, см.:

Отзыв: еще одинAliNodeфункция встроена. Но на самом деле это не имеет большого значения.Основой AliNode является платформа анализа.Возможность сбора этой части изначально предназначалась для открытого исходного кода и возврата.

В то же время, благодаря вышеупомянутому обновлению V8, теперь можно динамически регулировать размер кучи в соответствии с доступной памятью.

Обновление схемы модуля ESM

Модули ES6 все еще находятся в экспериментальной стадии, но есть новые способы, см.эта статья.

Комментарии: Позвольте пуле лететь какое-то время, эта функция действительно не является болевой точкой, не нужно спешить.

другие обновления

  • лучшая поддержка собственных модулей,N-APIОбновите до версии 4 и выполните резервное копирование на Node.js 8.x и 10.x. Подробнее см.эта статья.
  • Обновление TLS до 1.3,Расширенные функции безопасности.
  • С обновлением компилятора C++ теперь требуетсяGCC 6 иglibc 2.17, соответствующая операционная система Win7 и macOS 10, подробнее см.эта статья.