Состоялся релиз 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 года.
بنيادي سڌارا:
- Объявлен стабильным 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 پليٽ فارم کي ويب ايپليڪيشنن جي سرور-سائڊ سپورٽ ۽ معياري ڪلائنٽ- ۽ سرور-سائڊ نيٽ ورڪ پروگرام ٺاهڻ لاءِ استعمال ڪري سگهجي ٿو. Node.js ايپليڪيشنن جي ڪارڪردگي کي وڌائڻ لاءِ، ماڊلز جو هڪ وڏو مجموعو تيار ڪيو ويو آهي، جنهن ۾ لاڳو ڪندڙ شامل آهن سرور ۽ HTTP، SMTP، XMPP، DNS، FTP، IMAP، POP3 جا ڪلائنٽ، مختلف ويب فريم ورڪ سان انضمام لاءِ ماڊلز، WebSocket ۽ Ajax هينڊلر، DBMS (MySQL، PostgreSQL، SQLite، MongoDB) جا ڪنيڪٽر، ٽيمپليٽ انجن، CSS انجن، ڪرپٽوگرافڪ الگورتھم ۽ اختيار سسٽم (OAuth) جي عملدرآمد، XML پارسر.
وڏي تعداد ۾ متوازي درخواستن کي سنڀالڻ لاءِ، Node.js هڪ غير هم وقت ساز ڪوڊ ايگزيڪيوشن ماڊل استعمال ڪري ٿو جيڪو نان بلاڪنگ ايونٽ پروسيسنگ ۽ ڪال بيڪ هينڊلرز تي ٻڌل آهي. سپورٽ ڪيل ڪنيڪشن ملٽي پلڪسنگ طريقن ۾ epoll، kqueue، /dev/poll، ۽ select شامل آهن. libuv لائبريري، جيڪا يونڪس سسٽم تي libev ۽ IOCP تي IOCP جو هڪ سپر سيٽ آهي، ڪنيڪشن ملٽي پلڪسنگ لاءِ استعمال ٿيندي آهي. Windowsلائبيو لائبريري کي ٿريڊ پول ٺاهڻ لاءِ استعمال ڪيو ويندو آهي، ۽ سي-اريس کي نان بلاڪنگ موڊ ۾ ڊي اين ايس سوالن کي انجام ڏيڻ لاءِ ضم ڪيو ويندو آهي. سڀئي بلاڪنگ سسٽم ڪالز ٿريڊ پول اندر عمل ۾ آنديون وينديون آهن ۽ پوءِ، سگنل هينڊلر وانگر، هڪ نامعلوم پائپ ذريعي پنهنجا نتيجا واپس ڪندا آهن. جاوا اسڪرپٽ ايگزيڪيوشن گوگل جي V8 انجن پاران مهيا ڪئي وئي آهي (مائڪروسافٽ چڪرا-ڪور انجن سان نوڊ. جي ايس جو هڪ قسم پڻ ترقي ڪري رهيو آهي).
ان جي بنيادي طور تي، Node.js Perl AnyEvent، Ruby Event Machine، Python Twisted فريم ورڪ، ۽ Tcl ايونٽ لاڳو ڪرڻ سان ملندڙ جلندڙ آهي، پر Node.js ۾ واقع ايونٽ لوپ ڊولپر کان لڪيل آهي ۽ هلندڙ ويب ايپليڪيشن ۾ ايونٽ هينڊلنگ وانگر آهي. برائوزر ۾. node.js لاءِ ايپليڪيشنون لکڻ وقت، توهان کي ايونٽ تي هلندڙ پروگرامنگ جي خاصيتن تي غور ڪرڻ جي ضرورت آهي، مثال طور، ڪرڻ جي بدران "var result = db.query("select..");" ڪم جي مڪمل ٿيڻ جي انتظار ۽ نتيجن جي بعد ۾ پروسيسنگ سان، Node.js استعمال ڪري ٿو غير مطابقت واري عمل جو اصول، يعني. ڪوڊ "db.query("select.."، function (نتيجو) {نتيجو پروسيسنگ}) ۾ تبديل ٿي ويو آهي، جنهن ۾ ڪنٽرول فوري طور تي وڌيڪ ڪوڊ ڏانهن منتقل ڪيو ويندو، ۽ سوال جو نتيجو پروسيس ڪيو ويندو جيئن ڊيٽا اچي.
جو ذريعو: opennet.ru
