[Перевод] Обновление Node.js
Логотип node.js
В этой статье кратко изложена информация о некоторых интересных вещах, происходящих в проекте Node.js в начале 2022 года.
Релизы
График выпуска Node.js должен быть предсказуемым, чтобы пользователи могли планировать свои миграции. По графику (рисунок 1):
Node.js 12 прекратит свое существование в конце апреля 2022 года.
Node.js 14 и 16 находятся на этапе долгосрочной поддержки и будут поддерживаться до апреля 2023 и апреля 2024 года соответственно.
Node.js 17 — это наша текущая линейка выпусков, которая будет поддерживаться до июня 2022 года.
Рис. 1. Проект Node.js опубликовал временную шкалу для предстоящих выпусков (источник: https://github.com/nodejs/release).
Также по традиции в апреле будет выпущена новая основная версия Node.js: версия 18. В проекте уже идет подготовка к новому релизу. Рабочая группа по сборке Node.js планирует все необходимые обновления операционной системы и компилятора. Ранние предварительные сборки, скорее всего, будут доступны в марте.
Новые фичи
Как всегда, участники усердно работают над добавлением новых функций в Node.js, перечисленных в виде pull requests на GitHub. Далее мы подробно расскажем о нескольких последних дополнениях.
HTTP — fetch ()
fetch()
из коробки ! Экспериментальная реализация этого долгожданного метода появилась и отправлена в Node.js 17.5.0. Глобальный fetch()
изначально будет доступен только при использовании в --experimental-fetch
в параметрах запуска из командной строки. Реализация основана на undici , клиенте HTTP/1.1, написанном для Node.js участниками проекта. Пример использования:
import {fetch} from 'undici';
async function fetchJson() {
const res = await fetch('https://api.github.com/zen');
console.log(res);
}
Включение этой функции частично было ускорено обсуждениями на последнем мини-саммите Node.js Next 10 в январе 2022 г., где проект определил и согласовал приоритеты для HTTP в Node.js. Вы можете посмотреть обсуждение на YouTube или прочитать резюме на GitHub.
Модули ECMAScript
В последние месяцы проект продолжал успешно внедрять модули ECMAScript. И ключевые вехи включают стабильные модули JSON. Хотя модули JSON остаются экспериментальными, теперь они включены по умолчанию, начиная с Node.js 17.5.0.
Также была добавлена поддержка утверждений импорта JSON, демонстрируемая следующим синтаксисом:
import example from './example.json' assert { type: 'json' };
Другие новые функции
Некоторые перспективные разработки:
Горячие темы в сообществе Node.js
Проект Node.js имеет огромную и разнообразную базу соавторов. Это одна из его самых сильных сторон и это означает, что там проводятся углубленные обсуждения всех самых мелких деталей, прежде чем принимать какие-то решения. Некоторые из наиболее интересных тем, обсуждаемых в настоящее время, перечислены в следующих разделах.
Primordials в ядре Node.js
Primordials используются в ядре Node.js в попытке предотвратить вмешательство во встроенные модули Node.js, в том числе от атак типа «загрязнение прототипа».
Использование primordials в ядре Node.js обсуждается в рамках проекта и Технического руководящего комитета Node.js (TSC). Обсуждение касается баланса между тем, насколько защищенными от взлома должны быть основные API, ценой защиты от взлома и затратами на поддержку кода, нагрузкой на производительность во время выполнения и усилиями, необходимыми для предотвращения возможного переопределения модели.
Обновление цепочки инструментов, используемой для сборки Node.js
Вновь разгорается дискуссия о том, какие инструменты должны использоваться для сборки Node.js. Текущая цепочка инструментов создает некоторые проблемы, и проект хотел бы внести изменения. Некоторые из вариантов представлены в этих документах:
Для тех кто хочет попробовать свои силы в команде Node.js, есть призыв помочь в продвижении этой миграции.
Next 10: Будущее Node.js
Группа Node.js Next 10 продолжает работать над выявлением и документированием ключевых технических приоритетов проекта. Недавно команда провела два мини-саммита. Один из них состоялся в ноябре 2021 года и касался подходящих типов для конечных пользователей и отдельных исполняемых приложений. Другой состоялся в январе 2022 года и был посвящен современным реализациям HTTP и документации.
Они хорошо поработали на этих двух саммитах, что привело к некоторым конкретным результатам. Например, благодаря обсуждениям HTTP, как упоминалось ранее, fetch()
теперь это экспериментальный API. Также в сообществе договорились изучить возможность обновления руководства по стилю, для создания более качественной документации в формате JSON, которую можно было бы использовать для более простого создания информации о типах.
Если вы хотите помочь Node.js стать лучше, смело обращайтесь в группу Next 10. Можете принять участие в обсуждениях в репозитории GitHub и посетить следующие встречи и мини-саммиты, которые можно найти в Календаре встреч проекта Node.js.
Так -же для просмотра доступны записи мини-саммитов Node.js Next 10:
Предстоящие события
Хотя ездить на конференции по-прежнему сложно, мы все надеемся, что ситуация станет лучше, когда придет время OpenJS World в Остине в июне 2022 года. Тем временем сообщество выступает виртуально на DevConf.cz , и планирует обсудить навигацию по экосистеме npm на предприятии в ходе предстоящей конференции CityJS в Лондоне 25 марта 2022 года.
Будьте в курсе обновлений Node.js
Я надеюсь, что вам понравился этот краткий обзор того, что происходит в сообществе Node.js. Если вы хотите узнать больше, почитайте: