Sunucu tarafı JavaScript platformu Node.js 21.0 mevcut

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

Ana iyileştirmeler:

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

Node.js platformu, hem Web uygulamalarının sunucu bakımı için hem de düzenli istemci ve sunucu ağ programları oluşturmak için kullanılabilir. Node.js uygulamalarının işlevselliğini genişletmek için, içinde HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 sunucuları ve istemcileri, entegrasyon modülleri uygulayan modüller bulabileceğiniz geniş bir modül koleksiyonu hazırlanmıştır. çeşitli web çerçeveleri, WebSocket ve Ajax işleyicileri , DBMS konektörleri (MySQL, PostgreSQL, SQLite, MongoDB), şablon oluşturma motorları, CSS motorları, kripto algoritmaları ve yetkilendirme sistemleri (OAuth), XML ayrıştırıcıları ile.

Node.js, çok sayıda paralel isteğin işlenmesini sağlamak için engellemeyen olay işlemeye ve geri arama işleyicilerinin tanımına dayalı eşzamansız bir kod yürütme modeli kullanır. Bağlantıları çoğaltmak için desteklenen yöntemler epoll, kqueue, /dev/poll ve select'tir. Bağlantı çoğullama için Unix sistemlerde libev ve Windows üzerinde IOCP için bir eklenti olan libuv kitaplığı kullanılır. libeio kitaplığı bir iş parçacığı havuzu oluşturmak için kullanılır ve c-ares, engellemesiz modda DNS sorguları gerçekleştirmek için entegre edilmiştir. Engellemeye neden olan tüm sistem çağrıları, iş parçacığı havuzunda yürütülür ve ardından, sinyal işleyiciler gibi, çalışmalarının sonucunu adsız bir kanal (boru) aracılığıyla geri aktarır. JavaScript kodunun yürütülmesi, Google tarafından geliştirilen V8 motorunun kullanılmasıyla sağlanır (ayrıca Microsoft, Chakra-Core motoruyla Node.js'nin bir sürümünü geliştirmektedir).

Node.js özünde Perl AnyEvent, Ruby Event Machine, Python Twisted çerçeveleri ve Tcl olay uygulamasına benzer, ancak Node.js'deki olay döngüsü geliştiriciden gizlenir ve çalışan bir web uygulamasındaki olay işlemeye benzer. tarayıcıda. node.js için uygulama yazarken, örneğin "var result = db.query("select..");" yapmak yerine olay güdümlü programlamanın özelliklerini göz önünde bulundurmanız gerekir. işin tamamlanmasını ve ardından sonuçların işlenmesini bekleyen Node.js, eşzamansız yürütme ilkesini kullanır, yani. kod "db.query("select..", function (result) {sonuç işleme});" biçimine dönüştürülür, burada denetim anında diğer koda geçer ve veri geldikçe sorgu sonucu işlenir.

Kaynak: opennet.ru

Yorum ekle