Elérhető a Node.js 20.0 szerveroldali JavaScript-platform.

Megjelent a Node.js 20.0, a JavaScript nyelvű hálózati alkalmazások futtatására szolgáló platform. A Node.js 20.0 a hosszú távú támogatású (LTS) ágak közé kerül, de ezt a státuszt csak októberben kapja meg, a stabilizálást követően. A Node.js 20.x támogatása 2026. április 30-ig tart. A korábbi LTS ág, a Node.js 18.x támogatása 2025 áprilisáig, míg a Node.js 16.x ág támogatása 2023 szeptemberéig tart. A Node.js 14.x LTS ág támogatása április 30-án, a közbenső Node.js 19.x ág támogatása pedig június 1-jén ér véget.

Fő fejlesztések:

  • A V8 motor frissítve lett a 11.3-as verzióra, amelyet a Chromium 113 használ. A Node.js 19 ághoz képest, amely a Chromium 107 motort alkalmazta, a következő új funkciók kerültek bevezetésre: String.prototype.isWellFormed és toWellFormed, Array.prototype és TypedArray.prototype metódusok, amelyek a tömbök és a TypedArray objektumok módosításakor a másolatokkal működnek, a RegExp 'v' zászlaja, ArrayBuffer méretének változtatásának és SharedArrayBuffer méretének növelésének támogatása, valamint a webszerverre optimalizált tail-call rekurzió.
  • Предложен экспериментальный механизм Permission Model, позволяющий ограничить доступ к определённым ресурсам в процессе исполнения. Поддержка Permission Model включается через указание при запуске флага «—experimental-permission». В начальной реализации предложены опции для ограничения доступа на запись (—allow-fs-write) и чтение (—allow-fs-read) к определённым частям ФС, дочерним процессам (—allow-child-process), дополнениям (—no-addons) и потокам (—allow-worker). Например, чтобы разрешить запись в каталог /tmp и чтение файла /home/index.js можно указать: node —experimental-permission —allow-fs-write=/tmp/ —allow-fs-read=/home/index.js index.js

    A hozzáférés ellenőrzésére ajánlott a process.permission.has() metódus használata, például: process.permission.has('fs.write', '/tmp/test').

  • A külső ECMAScript (ESM) modulok kezelői, amelyeket a '--experimental-loader' opcióval töltünk be, most egy külön szálban futnak, elszigetelve a fő száltól, ezzel megakadályozva az alkalmazások és a betöltött ESM modulok kódjának átfedését. A böngészőkkel analóg módon, az import.meta.resolve() metódus, ha az alkalmazásból hívják, most szinkron módban fut. Az egyik következő Node.js ágban a tervezett ESM betöltési támogatást stabil lehetőségekké kívánják alakítani.
  • A node:test (test_runner) modul stabil állapotba került, amely a JavaScript nyelvű tesztek létrehozására és futtatására szolgál, és TAP (Test Anything Protocol) formátumban adja vissza az eredményeket.
  • Külön csapatot alakítottak ki a teljesítmény optimalizálására, amely az új ág előkészítése során dolgozott a különböző runtime komponensek, például az URL elemzés, a fetch() és az EventTarget gyorsításán. Például az EventTarget inicializálásához szükséges overheadet a felére csökkentették, jelentősen megnövelték az URL.canParse() módszer teljesítményét, és hatékonyabbá tették az időzítők működését. Ezenkívül egy nagy teljesítményű URL elemzőt, az Ada 2.0-t is beépítették, amely C++ nyelven készült.
  • Folyamatosan fejlődik kísérleti funkció az alkalmazások egyetlen végrehajtható fájl formájában történő szállítására (SEA, Egy végrehajtható alkalmazások). A végrehajtható fájl létrehozása most a JSON-formátumú konfigurációs fájl alapján generált blob behelyettesítését igényli (a JavaScript-fájl behelyettesítése helyett).
  • Javult a Web Crypto API kompatibilitása más projektek megvalósításaival.
  • Hivatalosan támogatott lett a Windows ARM64 rendszereken.
  • Folyamatosan megvalósítják a WASI (WebAssembly System Interface) kiterjesztések támogatását elkülönített WebAssembly alkalmazások létrehozására. Megszűnt a WASI támogatás engedélyezéséhez szükséges külön parancssori zászló megadása.

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