A Node.js 18.0 szerveroldali JavaScript platform elérhető.

Megjelent a Node.js 18.0, a JavaScript nyelvű hálózati alkalmazások futtatására szolgáló platform. A Node.js 18.0 hosszú távú támogatású ághoz tartozik, de ezt a státuszt csak októberben kapja meg a stabilizálás után. A Node.js 18.x támogatása 2025 áprilisáig tart. A korábbi LTS Node.js 16.x ága 2024 áprilisáig, míg az azt megelőző 14.x ága 2023 áprilisáig lesz karbantartva. A 12.x LTS ág karbantartása április 30-án megszűnik, míg a 17.x köztes ág június 1-jén véget ér.

Fő fejlesztések:

  • A V8 motor frissítve lett 10.1-es verzióra, amely a Chromium 101-ben használatos. A Node.js 17.9.0-hoz képest támogatásra került többek között a findLast és a findLastIndex metódusok, amelyek lehetővé teszik az elemek keresését a tömb végéről. Továbbá javult az Intl.Locale API. Felgyorsult a class mezők és privát metódusok inicializálása.
  • Alapértelmezetten aktiválásra került a fetch() kísérleti API, amely a hálózaton érkező erőforrások letöltésére szolgál. A megvalósítás az undici HTTP/1.1 kliens kódján alapul, és a böngészőkben elérhető hasonló API-hoz van a leginkább közel. Továbbá támogatottak a FormData, Headers, Request és Response interfészek, amelyek lehetővé teszik a HTTP-kérések és válaszok fejléceivel való manipulációt. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • Kísérleti megvalósítást kapott a Web Streams API, amely hozzáférést biztosít a hálózaton keresztül érkező adattagokhoz. Az API lehetővé teszi, hogy saját kezelőket adjunk hozzá az adatfolyamok kezeléséhez az információk érkezésével, anélkül, hogy meg kellene várni az egész fájl letöltését. A Node.js-ben most elérhetők olyan objektumok, mint a ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream és DecompressionStream.
  • Stabil állapotba került a Blob API, amely lehetővé teszi a módosíthatatlan nyers adatok kapszulázását a különböző munkafolyamatok biztonságos felhasználása érdekében.
  • Stabil állapotba került a BroadcastChannel API, amely lehetővé teszi az üzenetváltást aszinkron módban az „egy küldő — sok fogadó” formátumban.
  • Kísérleti modul került hozzáadásra a node:test számára, melynek segítségével JavaScript nyelvű teszteket hozhatunk létre és futtathatunk, amelyek TAP (Test Anything Protocol) formátumban adják vissza az eredményeket.
  • Biztosították a kész csomagok előállítását a Red Hat Enterprise Linux (RHEL) 8-hoz és más Glibc 2.28+ alapú disztribúciókhoz, beleértve a Debian 10-et és az Ubuntu 20.04-et, valamint a macOS 10.15-öt. A V8 motorral kapcsolatos problémák miatt ideiglenesen leállították a 32 bites Windows verziók elkészítését.
  • Kísérleti lehetőség került bevezetésre a Node.js végrehajtható fájl felépítésére a felhasználó által kiválasztott komponensekkel, amelyeket a futtatáskor inicializálnak. A kezdőkomponensek meghatározásához a configure build scripthez hozzáadták a "--node-snapshot-main" opciót, például: ".\/configure --node-snapshot-main=marked.js; name node"

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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster