Plataforma JavaScript del costat del servidor Node.js 21.0 disponible

Состоялся релиз Node.js 21.0, платформы для выполнения сетевых приложений на языке JavaScript. Поддержка ветки Node.js 21.0 будет осуществляться в течение 6 месяцев. В ближайшие дни будет завершена стабилизация ветки Node.js 20, которая получит статус LTS и будет поддерживаться до апреля 2026 года. Сопровождение прошлой LTS-ветки Node.js 18.0 продлится до сентября 2025 года, а позапрошлой LTS-ветки 16.0 до апреля 2024 года.

Principals millores:

  • Объявлен стабильным API Fetch, предназначенный для загрузки ресурсов по сети и упрощающий написание универсального JavaScript-кода, пригодного для работы на стороне сервера и клиента. Реализация основана на коде из HTTP/1.1 клиента undici и максимально приближена к аналогичному API, предоставляемому в браузерах. API включает в себя метод fetch() и объекты Headers. Request и Response, представляющие HTTP-заголовки, запрос и ответ. const res = await fetch(‘https://nodejs.org/api/documentation.json’); if (res.ok) { const data = await res.json(); console.log(data); }
  • Стабилизирована поддержка API WebStreams, предоставляющего доступ к потокам данных, полученным по сети. API даёт возможность добавить свои обработчики, работающие с данными по мере поступления информации по сети, не дожидаясь загрузки всего файла. В Node.js доступны такие объекты, как ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream и DecompressionStream.
  • Добавлена экспериментальная реализация клиента WebSocket, совместимая с браузерами. Для включения поддержки WebSocket предусмотрен флаг «—experimental-websocket».
  • Добавлен экспериментальный режим использования по умолчанию реализации JavaScript-модулей ESM (ECMAScript Modules, применяется в модулях для браузеров) вместо CommonJS (специфичен для Node.js). Изменение не затрагивает модули, формат которых явно определён через поле «type» в package.json, задан через флаг «—input-type» или очевиден в силу расширения файла (.mjs для ESM, .cjs для CommonJS). При этом модули, которые явно не определены как CommonJS (например, имеют расширение «.js»), при включении нового режима будут восприниматься как модули ESM. Для активации новых настроек модулей предложен флаг «—experimental-default-type».
  • Движок V8 обновлён до версии 11.8, применяемой в Chromium 118, в котором появилась поддержка метода ArrayBuffer.prototype.transfer, возможности группировки массивов (метод groupBy) и WebAssembly-инструкций обработки констант (i32.add, i32.sub, i32.mul, i64.add, i64.sub и i64.mul).
  • Прекращена поддержка обработчика globalPreload, вместо которого для настройки модулей следует использовать вызовы register и initialize.
  • В функцию fs.writeFile добавлена опция «flush» для принудительного сброса данных на накопитель после каждой операции записи.
  • Повышена производительность кода, связанного с разбором URL, API fetch, streams, node:fs и HTTP.
  • Добавлен глобальный объект navigator. Например, для получения данных о числе ядер CPU можно использовать свойство navigator.hardwareConcurrency.
  • В параметре «—test» добавлена поддержка glob-масок для выбора запускаемых тестов (например, можно указать «—test **/*.test.js.»).
  • Обновлены входящие в комплект пакетный менеджер npm 10.2.0 и парсер llhttp 9.1.2.
  • Прекращена поддержка Visual Studio 2019 и версий macOS старее 11.0.

La plataforma Node.js es pot utilitzar tant per al manteniment del servidor d'aplicacions web com per a la creació de programes habituals de xarxa de client i servidor. Per ampliar la funcionalitat de les aplicacions per a Node.js, s'ha preparat una gran col·lecció de mòduls, en els quals es poden trobar mòduls amb la implementació de servidors i clients HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, mòduls per a la integració. amb diversos frameworks web, gestors WebSocket i Ajax, connectors DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motors de plantilles, motors CSS, implementacions d'algoritmes criptogràfics i sistemes d'autorització (OAuth), analitzadors XML.

Per garantir el processament d'un gran nombre de sol·licituds paral·leles, Node.js utilitza un model d'execució de codi asíncron basat en la gestió d'esdeveniments sense bloqueig i la definició de gestors de devolució de trucada. Els mètodes admesos per a la multiplexació de connexions són epoll, kqueue, /dev/poll i select. Per a la multiplexació de connexions, s'utilitza la biblioteca libuv, que és un complement per a libev en sistemes Unix i IOCP a Windows. La biblioteca libeio s'utilitza per crear un grup de fils, c-ares s'integra per realitzar consultes DNS en mode sense bloqueig. Totes les trucades al sistema que causen bloqueig s'executen dins del grup de fils i després, com els controladors de senyals, transfereixen el resultat del seu treball de nou a través d'una canonada sense nom (pipe). L'execució del codi JavaScript es proporciona mitjançant l'ús del motor V8 desenvolupat per Google (a més, Microsoft està desenvolupant una versió de Node.js amb el motor Chakra-Core).

En el seu nucli, Node.js és similar als marcs Perl AnyEvent, Ruby Event Machine, Python Twisted i la implementació d'esdeveniments Tcl, però el bucle d'esdeveniments a Node.js està ocult per al desenvolupador i s'assembla a la gestió d'esdeveniments en una aplicació web que s'executa. al navegador. Quan escriviu aplicacions per a node.js, heu de tenir en compte les especificitats de la programació basada en esdeveniments, per exemple, en lloc de fer "var resultat = db.query("select..");" amb l'espera de la finalització del treball i el processament posterior dels resultats, Node.js utilitza el principi d'execució asíncrona, és a dir. el codi es transforma en "db.query("seleccionar..", funció (resultat) {processament de resultats});", en el qual el control passarà instantàniament a més codi i el resultat de la consulta es processarà a mesura que arribin les dades.

Font: opennet.ru

Afegeix comentari