Megjelent a Node.js 19.0, a JavaScript nyelvű hálózati alkalmazások futtatására szolgáló platform. A Node.js 19 a normál támogatási fázis kategóriájába tartozik, frissítéseket 2023 júniusáig fognak kiadni. A közeljövőben befejeződik a Node.js 18 stabilizálása, amely LTS státuszt kap és 2025 áprilisáig lesz támogatva. A korábbi LTS változat, a Node.js 16.0 támogatása 2023 szeptemberéig tart, míg a jóval korábbi 14.0 LTS verzió támogatása 2023 áprilisáig lesz biztosítva.
Fő fejlesztések:
- A V8 motor frissítve lett a 10.7-es verzióra, amely a Chromium 107-ben található. Az engine Node.js 18-hoz viszonyított változásai között említést nyert a harmadik verziójának API-jának, az Intl.NumberFormat-nak a megvalósítása, amely új funkciókat, mint formatRange(), formatRangeToParts() és selectRange(), új csoportosítási lehetőségeket, új kerekítési opciókat és pontosság megadását, valamint a számok dekódolásának lehetőségét kínálja. Emellett frissítve lettek a csomagban szereplő függőségek, a llhttp 8.1.0 és npm 8.19.2.
- Javasolták a kísérleti "node —watch" parancsot, amely valós idejű figyelési módot valósít meg, így az importált fájl módosításakor újraindítja a folyamatot (például, ha végrehajtja a "node —watch index.js" parancsot, a folyamat automatikusan újraindul a index.js módosításakor).
- Minden kimenő HTTP/HTTPS kapcsolatnál aktiválva lett a HTTP 1.1 Keep-Alive mechanizmus támogatása, amely lehetővé teszi, hogy a kapcsolatot egy bizonyos ideig nyitva tartsák, így több HTTP-kérelmet dolgozhatnak fel egyetlen kapcsolaton belül. A Keep-Alive használatával növelni lehet a sávszélességet és a teljesítményt. Alapértelmezettként a kapcsolat nyitva tartásának időtartama 5 másodpercre van állítva. A HTTP ügyfél implementációjába integrálták a Keep-Alive HTTP fejlécek értelmezésének támogatását a válaszokban, a szerverés a Node.js HTTP szerver megvalósításához automatikus leválasztást adtak a nem aktív, Keep-Alive-t használó kliensek esetében.
- A WebCrypto API stabil változata is elérhető, kivéve a Ed25519, Ed448, X25519 és X448 algoritmusokat használó funkciókat. A WebCrypto modul mostantól elérhető a globalThis.crypto vagy require(‘node:crypto’).webcrypto használatával.
- Eltávolították a DTrace, SystemTap és ETW (Event Tracing for Windows) nyomkövető eszközök támogatását, mivel a karbantartásuk nem volt célszerű a megfelelő támogatási terv hiánya miatt.
A Node.js platform szerver oldali webalkalmazások működtetésére, valamint hagyományos kliens és szerver hálózati programok készítésére használható. A Node.js alkalmazások funkcionalitásának bővítése érdekében egy nagy modulgyűjtemény készült, amely tartalmaz különböző megvalósítású modulokat. szerverek és HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klienseket, valamint modulokat különböző webkeretrendszerek integrálásához, WebSocket és Ajax kezelőket, az adatbázisokhoz (MySQL, PostgreSQL, SQLite, MongoDB) való kapcsolódásokat, sablongenerátorokat, CSS-motorokat, kriptográfiai algoritmusok és hitelesítési rendszerek (OAuth) megvalósításait, XML-parsereket.
A számos párhuzamos kérés feldolgozásának biztosítása érdekében a Node.js aszinkron kódvégrehajtási modellt használ, amely események alapján működik, blokkolásmentes üzemmódban, és callback kezelők definiálásával. A kapcsolatok multiplexelésére olyan módszerek állnak rendelkezésre, mint az epoll, kqueue, /dev/poll és select. A kapcsolatok multiplexelésére a libuv könyvtárat használják, amely a libev fölé épül Unix rendszerekben és az IOCP-t a Windows rendszerekben. A szálmedence (thread pool) létrehozásához a libeio könyvtárat használják, míg a blokkolásmentes DNS-kérések végrehajtásához a c-ares integrálva van. Minden blokkolásos rendszerszó hívás a szálmedencén belül hajtódik végre, és a jelek kezelőihez hasonlóan az eredményüket egy névtelen csövön (pipe) keresztül adják vissza. A JavaScript-kód végrehajtását a Google által kifejlesztett V8 motor igénybevételével biztosítják (továbbá a Microsoft kifejleszti a Node.js egy változatát a Chakra-Core motorral).
A Node.js lényegében hasonlít a Perl AnyEvent, Ruby Event Machine, Python Twisted keretrendszerekhez és a Tcl eseménykezelés implementációjához, de a Node.js eseményfeldolgozó ciklus (event loop) rejtve marad a fejlesztő elől, és az események kezelésére emlékeztet egy webalkalmazás működésére a böngészőben. Node.js alkalmazások írása során figyelembe kell venni az eseményalapú programozás sajátosságait, például ahelyett, hogy „var result = db.query(„select..“);” formában várnánk a folyamat befejezésére és a visszatérő eredmények későbbi feldolgozására, a Node.js az aszinkron végrehajtás elvét alkalmazza, azaz a kód átalakul „db.query(„select..“, function (result) {eredményfeldolgozás});” formára, amely esetben a vezérlés azonnal folytatódik a további kóddal, és az adatokat a beérkezésükkor dolgozzuk fel.
Forrás: opennet.ru
