В апреле 2022 года был выпущен релиз NodeJS Node v18. Обновление Node v18 было одним из самых ожидаемых обновлений со времен Node v14, которое добавило API асинхронного локального хранилища, системный интерфейс веб-сборки (WASI) и поддержку модулей ECMAScript.

Обновление v18 добавляет различные улучшения в NodeJS, в том числе глобально включенный API выборки по умолчанию, поддержку API веб-потока и основной модуль запуска тестов. Здесь мы рассмотрим большинство значительных изменений в NodeJS в v18.

1. API извлечения

Fetch API предоставляет интерфейс для доступа и управления HTTP-запросами и ответами. До NodeJS v18 HTTP-запросы, сделанные с помощью NodeJS, требовали сторонних библиотек, таких как аксиомы а также выборка узла или сложный http или же https упаковка.

NodeJS v18 по умолчанию делает API выборки доступным в глобальной области. Глобальный API выборки устраняет необходимость в сторонних библиотеках, таких как аксиомы и подробный код, связанный с https package при получении ресурсов асинхронно по сети.

instagram viewer

Вот пример использования API:

константа получитьданные = асинхронныйфункция () {
пытаться {
константа разрешение = Ждите получить("https://example.com/users");
константа данные = Ждите res.json();
приставка.log (данные);
} ловить (ошибка) {
приставка.журнал(`Что-то пошло не так, ${ошибка}`);
}
};
получить данные();

получить данные функция выше отправляет ПОЛУЧИТЬ запрос на получение ресурсов из " https://example.com/users". API выборки также принимает необязательный второй параметр, объект параметров. Объекты параметров должны содержать сведения о запросе. Например:

константа пользовательские данные = {
имя: "Джон Сноу",
возраст: 25,
Пол: "М",
};
константа почтовые данные = асинхронныйфункция (данные) {
пытаться {
константа разрешение = Ждите получить("https://example.com/users", {
метод: "ПОЧТА",
тело: JSON.stringify (данные),
});
константа данные ответа = Ждите res.json();
приставка.журнал(
`Запрос был выполнен успешно. Вот подробности: ${данные_ответа}`
);
} ловить (ошибка) {
приставка.журнал(`Запрос был неудачным. Вот подробности: ${ошибка}`);
}
};
постДанные (данные пользователя);

Хотя API выборки по-прежнему экспериментальный, это должно хорошо работать для большинства пользователей.

2. Поддержка API веб-потоков

Подумайте о мультимедийных приложениях или приложениях реального времени; это основной вариант использования API веб-потоков. API веб-потоков — это набор интерфейсов, которые позволяют программно разбивать большой ресурс, полученный по сети, на небольшие фрагменты, а затем обрабатывать их по крупицам.

Примером потока является тело ответа, возвращаемое успешным принести запрос. Тело ответа имеет тип ReadableStream.

NodeJS v18 предоставляет экспериментальный реализация API веб-потоков. Благодаря этому обновлению API-интерфейсы веб-потоков теперь доступны как на клиенте, так и на сервере, что упрощает разработку.

Вы можете найти список поддерживаемых в настоящее время потоков в официальные примечания к выпуску.

3. Модуль запуска тестов

В более ранних версиях NodeJS тестирование без сторонних библиотек производилось встроенным утверждать библиотека.

утверждать Библиотека позволяла легко писать простые тесты, но имела существенные ограничения, затруднявшие работу с несколькими наборами тестов. Эти ограничения привели к необходимости использования сторонних библиотек, таких как Jest, для выполнения более сложных тестов.

NodeJS v18 устраняет необходимость в сторонних библиотеках благодаря внедрению собственного основного модуля запуска тестов NodeJS. Средство запуска тестов поддерживает такие функции, как подтесты, пропуск тестов, тесты обратного вызова и т. д., как и Jest.

Чтобы использовать средство запуска тестов, вы должны импортировать утверждать из утверждать а также тест из узел: тест. Обратите внимание на "узел:" префикс; это новый протокол Node, который отличает пакеты ядра узла от пакетов, созданных пользователями.

константаутверждать = требуется("утверждать");
константа тест = требовать("узел: тест");

Вот пример простого теста с использованием модуля запуска тестов:

тест("Проверьте, совпадают ли строки", (т) => {
утверждать.strictEqual("тест", "тест");
});

Результаты теста, отображаемые бегуном теста, будут в TAP (Протокол тестирования чего угодно) формат. Обратите внимание, что эта функция все еще является экспериментальной и может измениться в любое время.

4. Другие обновления и исправления

Обновление Node v18 также содержит обновление ядра v8 до версии 10.1. Движок v8 — это среда выполнения JavaScript, используемая NodeJS для выполнения JavaScript.

Обновление v8 делает методы массиванайтипоследний а также найтипоследнийиндекс доступны в NodeJS и улучшают производительность полей класса и методов закрытого класса.

NodeJS также предоставляет следующие API в глобальном масштабе в обновлении Node v18:

  • капля
  • вещательный канал

Обновление до Node v18

Используя Node v18, вы можете тестировать все приложение без внешних библиотек, асинхронно извлекать ресурсы без внешних библиотек и включать веб-потоки на своем сервере.

Однако стоит отметить, что эти функции все еще являются экспериментальными и могут измениться в любое время. Вы можете перейти на NodeJS v18 с помощью официальная ссылка для скачивания.