предисловие
Через год Node.js 12 прибыл, как и было обещано, официально выпустив первуюCurrentВерсия.
В этом релизе есть такие вещи, как:
- Обновление V8 приносит много приятных функций.
- Улучшена скорость парсинга HTTP.
- Скорость запуска значительно улучшена.
- Улучшенные инструменты диагностической отчетности и анализа кучи.
- Обновление модуля ЕСМ.
Релевантная информация:
- Оригинальный адрес:medium.com/@node будет /int…
- Юк Адрес:вооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо
Что такое ЛТС?
Если вы не понимаете стратегию выпуска долгосрочной поддержки 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. (туман)
Это обновление версии также содержит несколько полезных функций:
- Асинхронная трассировка стека
- Оптимизация скорости вызова при несоответствии вызова параметра
- быстрее ждать
- Более быстрый анализ JavaScript
В то же время я провел несколько внутренних тестов нашего 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, ужас улучшения производительности выглядит следующим образом:
Комментарии: Ужас.
Улучшение скорости запуска
пройти через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, подробнее см.эта статья.