[Перевод] Обновление Node.js

Логотип 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).Рис. 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. Если вы хотите узнать больше, почитайте:

© Habrahabr.ru