Bola vydaná verzia Node.js 19.0, platformy pre spúšťanie sieťových aplikácií v jazyku JavaScript. Node.js 19 patrí do vetvy s bežnou podporou, aktualizácie pre ňu budú vydávané do júna 2023. V najbližších dňoch bude dokončená stabilizácia vetvy Node.js 18, ktorá získa status LTS a bude podporovaná do apríla 2025. Podpora pre predchádzajúcu vetvu LTS Node.js 16.0 potrvá do septembra 2023, zatiaľ čo podpora pre predchádzajúcu LTS vetvu 14.0 potrvá do apríla 2023.
Hlavné vylepšenia:
- Motor V8 bol aktualizovaný na verziu 10.7, použitú v Chromium 107. Medzi zmenami v motore v porovnaní s vetvou Node.js 18 sa uvádza implementácia tretej verzie API Intl.NumberFormat, do ktorej boli pridané nové funkcie formatRange(), formatRangeToParts() a selectRange(), grupovanie množín, nové možnosti zaokrúhľovania a zadávania presnosti, ako aj možnosť interpretácie reťazcov ako desatinných čísel. Taktiež boli aktualizované závislosti llhttp 8.1.0 a npm 8.19.2, ktoré sú súčasťou balíka.
- Bola ponúknutá experimentálna príkazová funkcia „node —watch“ s implementáciou režimu sledovania, ktorý zabezpečuje reštart procesu pri zmene importovaného súboru (napríklad, ak sa vykonáva „node —watch index.js“, proces sa automaticky reštartuje pri zmene index.js).
- Podpora mechanizmu HTTP 1.1 Keep-Alive bola zapnutá pre všetky odchádzajúce HTTP/HTTPS spojenia, čo umožňuje udržiavať spojenie otvorené určitý čas na spracovanie viacerých HTTP požiadaviek v rámci jedného spojenia. Predpokladá sa, že využitie Keep-Alive zvýši priepustnosť a výkonnosť. Predvolený časový limit udržania otvoreného spojenia je nastavený na 5 sekúnd. Do implementácie HTTP klienta bola pridaná podpora pre analýzu HTTP hlavičky Keep-Alive v odpovediach. servera, a do implementácie HTTP servera Node.js bola pridaná automatická odpojenie neaktívnych klientov používajúcich Keep-Alive.
- API WebCrypto bolo zaradené medzi stabilné, s výnimkou funkcií používajúcich algoritmy Ed25519, Ed448, X25519 a X448. Pre prístup k modulu WebCrypto je teraz možné používať globalThis.crypto alebo require(‘node:crypto’).webcrypto.
- Podpora pre nástroje sledovania DTrace, SystemTap a ETW (Event Tracing for Windows) bola odstránená, pretože ich údržba bola považovaná za neefektívnu vzhľadom na zložitosti spojené s udržiavaním aktuálnych verzií bez riadneho plánu ich podpory.
Platforma Node.js môže byť použitá na serverovú podporu webových aplikácií, ako aj na vytváranie klasických klientských a serverových sieťových programov. Pre rozšírenie funkčnosti aplikácií pre Node.js bola pripravená veľká kolekcia modulov, v ktorej nájdete moduly s realizáciou. serverov a klientov HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduly na integráciu s rôznymi webovými rámcami, spracovateľov WebSocket a Ajax, konektorov k DBMS (MySQL, PostgreSQL, SQLite, MongoDB), šablónovačov, CSS enginov, implementácií kryptografických algoritmov a systémov autorizácie (OAuth), XML parserov.
Na zabezpečenie spracovania veľkého počtu paralelných dopytov využíva Node.js asynchrónny model spúšťania kódu, založený na spracovaní udalostí v neblokujúcom režime a určovaní callback spracovateľov. Ako metódy multiplexovania pripojení podporujú také metódy, ako sú epoll, kqueue, /dev/poll a select. Na multiplexovanie pripojení sa používa knižnica libuv, ktorá je nadstavbou nad libev na systémoch Unix a nad IOCP na Windows. Na vytvorenie poolu vlákien (thread pool) je zapojená knižnica libeio, na vykonávanie DNS dopytov v neblokujúcom režime je integrovaný c-ares. Všetky systémové volania, ktoré spôsobujú blokovanie, sa vykonávajú vnútri poolu vlákien a potom, rovnako ako spracovatelia signálov, prenášajú výsledok svojej práce späť cez anonymný kanál (pipe). Vykonávanie JavaScript kódu je zabezpečené zapojením vyvinutého engine V8 spoločnosťou Google (ďalej Microsoft vyvíja variant Node.js s engine Chakra-Core).
V podstate je Node.js podobný rámcom Perl AnyEvent, Ruby Event Machine, Python Twisted a realizácii udalostí v Tcl, ale cyklus spracovania udalostí (event loop) v Node.js je skrytý pred vývojárom a pripomína spracovanie udalostí vo webovej aplikácii, ktorá beží v prehliadači. Pri písaní aplikácií pre Node.js je potrebné zohľadniť špecifiku udalostne orientovaného programovania, napríklad, namiesto vykonávania „var result = db.query(„select..“);“ s očakávaním dokončenia práce a následným spracovaním výsledkov, v Node.js sa používa princíp asynchrónneho vykonávania, t.j. kód sa transformuje na „db.query(„select..“, function (result) {spracovanie výsledku});“, pri ktorom sa riadenie okamžite presunie na ďalší kód a výsledok dopytu bude spracovaný, akonáhle sa údaje dostanú.
Zdroj: opennet.ru
