Что нового в Node.js 18.0 серверном JavaScript

Что нового в Node.js 18.0 серверном JavaScript
Метки: / /

Состоялся релиз Node.js 18, платформы для выполнения сетевых приложений на языке JavaScript. Тут вы узнаете что нового в Node.js 18.0, сам релиз отнесён к веткам с длительным сроком поддержки, но данный статус будет присвоен только в октябре, после проведения стабилизации. Поддержка Node.js 18.x будет осуществляться до апреля 2025 года. Сопровождение прошлой LTS-ветки Node.js 16.x продлится до апреля 2024 года, а позапрошлой LTS-ветки 14.x до апреля 2023 года. Сопровождение LTS-ветки 12.x будет прекращено 30 апреля, а промежуточной ветки Node.js 17.x — 1 июня.

Что нового в Node.js 18.0:

  • Движок V8 обновлён до версии 10.1, применяемой в Chromium 101. По сравнению с выпуском Node.js 17.9.0 появилась поддержка таких возможностей, как методы findLast и findLastIndex для поиска элементов относительно конца массива и функции Intl.supportedValuesOf. Улучшен API Intl.Locale. Ускорена инициализация полей классов и приватных методов.
  • Включён по умолчанию экспериментальный API fetch(), предназначенный для загрузки ресурсов по сети. Реализация основана на коде из HTTP/1.1 клиента undici и максимально приближена к аналогичному API, предоставляемому в браузерах. В том числе обеспечена поддержка интерфейсов FormData, Headers, Request и Response для манипуляции HTTP-заголовками запросов и ответов.
  • Добавлена экпериментальная реализация API Web Streams, предоставляющего доступ к потокам данных, полученным по сети. API даёт возможность добавить свои обработчики для работы с данными по мере поступления информации по сети, не дожидаясь загрузки всего файла. В Node.js теперь доступны такие объекты, как ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream и DecompressionStream.
  • В число стабильных переведён API
    Blob, который позволяет инкапсулировать неизменяемые сырые данные для их безопасного использования в разных рабочих потоках.
  • В число стабильных переведён API
    BroadcastChannel, позволяющий организовать обмен сообщениями в асинхронном режиме в формате «один отправитель — много получателей».
  • Добавлен экспериментальный модуль node:test для создания и запуска тестов на языке JavaScript, возвращающих результат в формате TAP (Test Anything Protocol).
  • Обеспечено формирование готовых сборок для Red Hat Enterprise Linux (RHEL) 8 и других дистрибутивов на базе Glibc 2.28+, включая Debian 10 и Ubuntu 20.04, а также для macOS 10.15+. Из-за проблем со сборкой движка V8 временно прекращено формирование 32-разрядных сборок для Windows.
  • Предоставлена экспериментальная возможность сборки исполняемого файла Node.js с выбранными пользователем компонентами, инициализируемыми при запуске. Для определения стартовых компонентов в сборочный скрипт configure добавлена опция --node-snapshot-main, например, ./configure --node-snapshot-main=marked.js; name node

Платформа Node.js может быть использована как для серверного сопровождения работы Web-приложений, так и для создания обычных клиентских и серверных сетевых программ. Для расширения функциональности приложений для Node.js подготовлена большая коллекция модулей, в которой можно найти модули с реализацией серверов и клиентов HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модули для интеграции с различными web-фреймворками, обработчики WebSocket и Ajax, коннекторы к СУБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонизаторы, CSS-движки, реализации криптоалгоритмов и систем авторизации (OAuth), XML-парсеры.

Для обеспечения обработки большого числа параллельных запросов Node.js задействует асинхронную модель запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. В качестве способов мультиплексирования соединений поддерживаются такие методы, как epoll, kqueue, /dev/poll и select. Для мультиплексирования соединений используется библиотека libuv, которая является надстройкой над libev в системах Unix и над IOCP в Windows. Для создания пула потоков (thread pool) задействована библиотека libeio, для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares. Все системные вызовы, вызывающие блокирование, выполняются внутри пула потоков и затем, как и обработчики сигналов, передают результат своей работы обратно через неименованный канал (pipe). Выполнение JavaScript-кода обеспечивается через задействование разработанного компанией Google движка V8 (дополнительно Microsoft развивает вариант Node.js с движком Chakra-Core).

По своей сути Node.js похож на фреймворки Perl AnyEvent, Ruby Event Machine, Python Twisted и реализацию событий в Tcl, но цикл обработки событий (event loop) в Node.js скрыт от разработчика и напоминает обработку событий в web-приложении, работающем в браузере. При написании приложений для node.js необходимо учитывать специфику событийно-ориентированного программирования, например, вместо выполнения var result = db.query("select.."); с ожиданием завершения работы и последующей обработкой результатов, в Node.js использует принцип асинхронного выполнения, т.е. код трансформируется в db.query("select..", function (result) {обработка результата});, при котором управление мгновенно перейдёт к дальнейшему коду, а результат запроса будет обработан по мере поступления данных.

Вывод:

В этой новости вы прочитали что нового в новой версии серверного языка JavaScript, Node.js 18.0, думаю вам было интересно, и вы увидели что обновление достаточно не плохое.

Источник: OpenNet.

Подписываетесь на соц-сети:

Оценка:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
(Пока оценок нет)
Загрузка...

Также рекомендую:

Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии