Server-side JavaSkript platfoarm Node.js 21.0 beskikber

Состоялся релиз 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 года.

Main ferbetterings:

  • Объявлен стабильным 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.

It platfoarm Node.js kin brûkt wurde sawol foar serverûnderhâld fan webapplikaasjes as foar it meitsjen fan reguliere client- en servernetwurkprogramma's. Om de funksjonaliteit fan applikaasjes foar Node.js út te wreidzjen, is in grutte samling modules taret, wêryn jo modules kinne fine mei de ymplemintaasje fan HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-tsjinners en kliïnten, modules foar yntegraasje mei ferskate webkaders, WebSocket- en Ajax-hannelers, DBMS-ferbiningen (MySQL, PostgreSQL, SQLite, MongoDB), sjabloanmotoren, CSS-motoren, ymplemintaasjes fan krypto-algoritmen en autorisaasjesystemen (OAuth), XML-parsers.

Om de ferwurking fan in grut oantal parallelle fersiken te garandearjen, brûkt Node.js in asynchronous koade-útfiermodel basearre op net-blokkearjende evenemint-ôfhanneling en de definysje fan callback-hannelers. Stipe metoaden foar multiplexing ferbinings binne epoll, kqueue, /dev/poll, en selektearje. Foar ferbiningsmultiplexing wurdt de libuv-bibleteek brûkt, dat is in tafoeging foar libev op Unix-systemen en IOCP op Windows. De libeio-bibleteek wurdt brûkt om in threadpool te meitsjen, c-ares is yntegreare om DNS-fragen út te fieren yn net-blokkearjende modus. Alle systeemoproppen dy't blokkearje feroarsaakje, wurde útfierd yn 'e threadpool en dan, lykas sinjaalhannelers, it resultaat fan har wurk werom fia in net neamde piip (pipe). De útfiering fan JavaScript-koade wurdt levere troch it brûken fan de V8-motor ûntwikkele troch Google (dêrneist ûntwikkelet Microsoft in ferzje fan Node.js mei de Chakra-Core-motor).

Yn har kearn is Node.js fergelykber mei de Perl AnyEvent, Ruby Event Machine, Python Twisted-frameworks, en de ymplemintaasje fan Tcl-evenemint, mar de barren-loop yn Node.js is ferburgen foar de ûntwikkelder en liket op evenemintehanneling yn in webapplikaasje dy't rint yn browser. By it skriuwen fan applikaasjes foar node.js, moatte jo beskôgje de spesifiken fan evenemint-oandreaune programmearring, bygelyks, ynstee fan in dwaan "var result = db.query ("selektearje ..");" mei wachtsjen op foltôging fan wurk en folgjende ferwurking fan resultaten, Node.js brûkt it prinsipe fan asynchronous útfiering, d.w.s. de koade wurdt omfoarme ta "db.query ("selektearje ..", funksje (resultaat) {resultaat ferwurking});", dêr't kontrôle sil daliks trochjaan oan fierdere koade, en de query resultaat wurdt ferwurke as gegevens oankomme.

Boarne: opennet.ru

Add a comment