Узнайте о новых функциях последней версии Node.js.

Первоначально опубликовано на https://fek.io.

Фонд Node.js только что выпустил первую версию Node v18.0.0. Фонд Node.js поддерживает несколько версий, включая текущую версию и версию с долгосрочной поддержкой (LTS). Текущий выпуск v18 станет выпуском LTS где-то в октябре 2022 года. Это обычный график выпуска для Node.

Принести

Одной из новых функций, привлекающих большое внимание, является новый fetch API. Fetch уже некоторое время присутствует в браузере и является модулем, который вы можете добавить в свой проект Node.js, запустив npm install node-fetch. Были жалобы на то, что они не полностью совместимы.

fetch() появился в Node, и теперь люди жалуются, что он не работает как node-fetch 🤦‍♂️. Однако ВСЕ заявили, что хотят получить от Node.js больше стандартных API-интерфейсов.

– Маттео Коллина (@matteocollina) 22 апреля 2022 г.

Fetch API предоставляет простой API на основе обещаний для выполнения клиентских HTTP-запросов. Раньше вам приходилось использовать XMLHttpRequest API для создания HTTP-запросов, которые требовали написания нескольких строк кода для выполнения запроса. Теперь с помощью Fetch API запрос HTTP можно сделать так же просто, как в следующем примере:

const response = await fetch('https://swapi.dev/api/people/1');
const data = await response.json();
console.log(data);

Тайм-ауты HTTP

Таймауты http.server изменились в Node.js v18. По умолчанию для headersTimeout установлено значение 60000 миллисекунд (60 секунд), а для requestTimeout установлено значение 300000 миллисекунд (5 минут). headersTimeout — это время, которое разрешено для анализа заголовка HTTP-запроса. requestTimeout — это тайм-аут, используемый для HTTP-запроса.

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

Хотя в Node.js существует множество популярных вариантов модульного тестирования кода, в Node никогда не было встроенного средства запуска тестов. Node v18 теперь включает модуль node:test. В приведенном ниже примере показано, как настроить тест и утверждения.

Подробнее о новом тесте можно прочитать в документации здесь https://nodejs.org/dist/latest-v18.x/docs/api/test.html.

API веб-потоков

Новый API веб-потоков теперь доступен глобально в глобальной области видимости. Хотя потоки с самого начала были частью API Node.js, этот API используется как браузером, так и Node.js, хотя это считается экспериментальной функцией в Node.

Веб-потоки поддерживают как устройства чтения, записи, так и контроллеры ReadableStream и WriteableStream. Их можно использовать в сочетании с новым fetch API.

Следующие объекты API теперь глобально доступны в Node v18:

  • ReadableStream
  • ReadableStreamDefaultReader
  • ReadableStreamBYOBReader
  • Ридаблестримбайобрекуест
  • Реадаблебайтестримконтроллер
  • Реадаблестримдефаултконтроллер
  • TransformStream
  • Трансформстримдефаултконтроллер
  • WritableStream
  • WritableStreamDefaultWriter
  • WritableStreamDefaultController
  • ByteLengthQueuingСтратегия
  • CountQueuingСтратегия
  • TextEncoderStream
  • TextDecoderStream
  • CompressionStream
  • Декомпрессионный поток

V8 10.1

В V8 10.1 есть три заметных изменения. Одним из таких дополнений являются новые методы массива для поиска последнего элемента и индекса массива:

Еще одним улучшением в V8 стала поддержка интернационализации. С добавлением функций Intl.Locale и Intl.supportedValuesOf теперь вы можете получать данные календаря, валюты, нумерации, а также данные часового пояса о местоположении, как показано в этом примере:

Движок V8 также добился успехов в улучшении производительности полей класса и частных методов класса. Формат данных функции v8.serialize изменился, и он не будет обратно совместим с более ранними версиями Node.js.

Набор инструментов и компилятор

Версии Node для Linux теперь построены на Red Hat Enterprise Linux и совместимы с glibc 2.28 или более поздней версии. Готовые двоичные файлы для macOS не требуют macOS 10.15 (Catalina) или более поздней версии. Теперь минимальной поддерживаемой архитектурой для AIX является Power 8.

Готовые двоичные файлы для 32-разрядной версии Windows в настоящее время недоступны из-за обновления V8, но могут быть восстановлены, если в V8 будет добавлена ​​поддержка 32-разрядных версий.

Заключение

Версия 18 Node.js содержит несколько полезных функций, и перед выпуском LTS должно появиться больше. Поскольку среда выполнения V8 обновляется новыми функциями, Node получает эти функции с новой версией V8. Я с нетерпением жду релиза LTS в октябре, как и другие разработчики Node.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.