Platforma server-side JavaScript Node.js 19.0 este disponibilă.

A avut loc lansarea Node.js 19.0, o platformă pentru executarea aplicațiilor de rețea scrise în JavaScript. Node.js 19 este inclus în ramura cu termen standard de suport, iar actualizările pentru aceasta vor fi lansate până în iunie 2023. În următoarele zile, va fi finalizată stabilizarea ramurii Node.js 18, care va primi statutul de LTS și va fi suportată până în aprilie 2025. Suportul pentru vechea ramură LTS Node.js 16.0 va continua până în septembrie 2023, iar pentru ramura LTS anterioară 14.0 până în aprilie 2023.

Îmbunătățiri principale:

  • Motorul V8 a fost actualizat la versiunea 10.7, utilizată în Chromium 107. Printre modificările din motor, comparativ cu ramura Node.js 18, se numără implementarea celei de-a treia versiuni a API-ului Intl.NumberFormat, care adaugă noi funcții formatRange(), formatRangeToParts() și selectRange(), gruparea seturilor, noi opțiuni de rotunjire și specificare a preciziei, precum și posibilitatea interpretării șirurilor ca numere zecimale. De asemenea, sunt actualizate dependențele incluse, llhttp 8.1.0 și npm 8.19.2.
  • A fost propusă o comandă experimentală „node —watch” cu implementarea unui mod de observație care permite repornirea procesului atunci când fișierul importat este modificat (de exemplu, în cazul execuției „node —watch index.js”, procesul va fi repornit automat la modificarea index.js).
  • Pentru toate conexiunile HTTP/HTTPS de ieșire a fost activată suportul pentru mecanismul HTTP 1.1 Keep-Alive, care lasă conexiunea deschisă pentru o perioadă determinată, permițând procesarea mai multor cereri HTTP în cadrul aceleași conexiuni. Se estimează că utilizarea Keep-Alive va îmbunătăți lățimea de bandă și performanța. În mod implicit, timeout-ul pentru menținerea conexiunii deschise este setat la 5 secunde. În implementarea clientului HTTP a fost adăugat suportul pentru analiza antetului HTTP Keep-Alive din răspunsuri, server, iar în implementarea serverului HTTP Node.js a fost adăugat deconectarea automată a clienților inactivi care utilizează Keep-Alive.
  • API-ul WebCrypto a fost transformat în versiune stabilă, cu excepția funcțiilor care utilizează algoritmii Ed25519, Ed448, X25519 și X448. Accesul la modulul WebCrypto poate fi acum realizat folosind globalThis.crypto sau require('node:crypto').webcrypto.
  • Suportul pentru instrumentele de trasare DTrace, SystemTap și ETW (Event Tracing for Windows) a fost eliminat, faptul fiind considerat ineficient din cauza dificultății de a menține aceste instrumente actualizate fără un plan adecvat de suport.

Platforma Node.js poate fi utilizată atât pentru suportul serverului în funcționarea aplicațiilor web, cât și pentru crearea de aplicații client și server de rețea obișnuite. Pentru a extinde funcționalitatea aplicațiilor pentru Node.js a fost pregătită o mare colecție de module, în care se pot găsi module cu implementări servere și clienți HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module pentru integrarea cu diverse framework-uri web, manejere WebSocket și Ajax, convertoare pentru baze de date (MySQL, PostgreSQL, SQLite, MongoDB), generatoare de șabloane, motoare CSS, implementări de algoritmi criptografici și sisteme de autorizare (OAuth), parsere XML.

Pentru a asigura procesarea unui număr mare de cereri paralele, Node.js utilizează un model asincron de execuție a codului, bazat pe procesarea evenimentelor în mod neblocat și pe definirea de callback-uri. Ca metode de multiplexare a conexiunilor sunt susținute metode precum epoll, kqueue, /dev/poll și select. Pentru multiplexarea conexiunilor se utilizează biblioteca libuv, care este o extensie a libev în sistemele Unix și a IOCP în Windows. Pentru crearea unui pool de thread-uri este folosită biblioteca libeio, iar pentru executarea cererilor DNS în mod neblocat este integrat c-ares. Toate apelurile sistemice care provoacă blocarea sunt executate în interiorul pool-ului de thread-uri și apoi, la fel ca manejerele de semnale, transmit rezultatul muncii lor înapoi printr-un canal anonim (pipe). Execuția codului JavaScript este asigurată prin implicarea motorului V8 dezvoltat de compania Google (în plus, Microsoft dezvoltă o variantă de Node.js cu motorul Chakra-Core).

În esență, Node.js este similar cu framework-urile Perl AnyEvent, Ruby Event Machine, Python Twisted și implementarea evenimentelor în Tcl, dar ciclul de procesare a evenimentelor (event loop) din Node.js este ascuns de dezvoltator și seamănă cu procesarea evenimentelor într-o aplicație web care rulează într-un browser. Atunci când scrieți aplicații pentru Node.js, trebuie să luați în considerare specificul programării orientate pe evenimente, de exemplu, în loc de a executa „var result = db.query(„select..”);” așteptând finalizarea operațiunii și prelucrarea ulterioară a rezultatelor, în Node.js se folosește principiul execuției asincrone, adică codul se transformă în „db.query(„select..”, function (result) {prelucrarea rezultatului});”, moment în care controlul va trece instantaneu la alt cod, iar rezultatul cererii va fi prelucrat pe măsură ce datele sosesc.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster