Platforma JavaScript pe partea de server Node.js 18.0 disponibilă

A fost lansat Node.js 18.0, o platformă pentru rularea aplicațiilor de rețea în JavaScript. Node.js 18.0 este clasificat ca ramură de suport pe termen lung, dar acest statut va fi atribuit abia în octombrie, după stabilizare. Node.js 18.x va fi acceptat până în aprilie 2025. Întreținerea ramurii LTS anterioare a Node.js 16.x va dura până în aprilie 2024, iar cu un an înainte de ultima ramură LTS 14.x până în aprilie 2023. Ramura 12.x LTS va fi întreruptă pe 30 aprilie, iar ramura de staging Node.js 17.x va fi întreruptă pe 1 iunie.

Principalele îmbunătățiri:

  • Motorul V8 a fost actualizat la versiunea 10.1, care este utilizată în Chromium 101. În comparație cu versiunea 17.9.0 a Node.js, există acum suport pentru funcții precum metodele findLast și findLastIndex pentru găsirea elementelor relativ la sfârșitul o matrice și funcția Intl.supportedValuesOf. Îmbunătățit Intl.Locale API. Inițializarea câmpurilor de clasă și a metodelor private a fost accelerată.
  • API-ul experimental fetch() este activat în mod implicit, conceput pentru încărcarea resurselor în rețea. Implementarea se bazează pe codul de la clientul HTTP/1.1 undici și este cât mai aproape de API-ul similar furnizat în browsere. Aceasta include suport pentru interfețele FormData, Headers, Request și Response pentru manipularea antetelor de solicitare HTTP și răspuns. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(date); }
  • A fost adăugată o implementare experimentală a API-ului Web Streams, oferind acces la fluxurile de date primite prin rețea. API-ul face posibilă adăugarea propriilor dvs. de gestionare pentru a lucra cu datele pe măsură ce informațiile ajung prin rețea, fără a aștepta descărcarea întregului fișier. Obiectele disponibile acum în Node.js includ ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream și DecompressionStream.
  • API-ul Blob a fost mutat la stabil, permițându-vă să încapsulați date brute imuabile pentru utilizare în siguranță în diferite fire de lucru.
  • API-ul BroadcastChannel a fost stabilizat, permițându-vă să organizați schimbul de mesaje în modul asincron în formatul „un expeditor - mulți destinatari”.
  • S-a adăugat modulul experimental node:test pentru crearea și rularea de teste în JavaScript care returnează rezultate în format TAP (Test Anything Protocol).
  • Este furnizată generarea de ansambluri gata făcute pentru Red Hat Enterprise Linux (RHEL) 8 și alte distribuții bazate pe Glibc 2.28+, inclusiv Debian 10 și Ubuntu 20.04, precum și pentru macOS 10.15+. Din cauza problemelor legate de construcția motorului V8, crearea de versiuni pe 32 de biți pentru Windows a fost oprită temporar.
  • A oferit o opțiune experimentală pentru a construi un executabil Node.js cu componente selectate de utilizator inițializate la pornire. Pentru a defini componentele de pornire, opțiunea „--node-snapshot-main” a fost adăugată la scriptul de construire de configurare, de exemplu, „./configure —node-snapshot-main=marked.js; nume nod"

Platforma Node.js poate fi utilizată atât pentru întreținerea pe server a aplicațiilor Web, cât și pentru crearea de programe obișnuite de rețea client și server. Pentru a extinde funcționalitatea aplicațiilor pentru Node.js, a fost pregătită o colecție mare de module, în care puteți găsi module cu implementare HTTP, SMTP, XMPP, DNS, FTP, IMAP, servere și clienți POP3, module pentru integrare cu diverse cadre web, handlere WebSocket și Ajax, conectori DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motoare de șabloane, motoare CSS, implementări de algoritmi cripto și sisteme de autorizare (OAuth), parsere XML.

Pentru a asigura procesarea unui număr mare de solicitări paralele, Node.js folosește un model de execuție a codului asincron bazat pe gestionarea evenimentelor neblocante și pe definiția handlerelor de apel invers. Metodele acceptate pentru multiplexarea conexiunilor sunt epoll, kqueue, /dev/poll și select. Pentru multiplexarea conexiunii, se folosește biblioteca libuv, care este un add-on pentru libev pe sisteme Unix și IOCP pe Windows. Biblioteca libeio este folosită pentru a crea un pool de fire, iar c-ares este integrat pentru a efectua interogări DNS în modul neblocant. Toate apelurile de sistem care provoacă blocare sunt executate în interiorul pool-ului de fire și apoi, ca și manipulatorii de semnal, transferă rezultatul muncii lor înapoi printr-o conductă (conductă) fără nume. Execuția codului JavaScript este asigurată prin utilizarea motorului V8 dezvoltat de Google (în plus, Microsoft dezvoltă o versiune de Node.js cu motorul Chakra-Core).

La bază, Node.js este similar cu Perl AnyEvent, Ruby Event Machine, cadrele Python Twisted și implementarea evenimentului Tcl, dar bucla de evenimente din Node.js este ascunsă de dezvoltator și seamănă cu gestionarea evenimentelor într-o aplicație web care rulează în browser. Când scrieți aplicații pentru node.js, trebuie să luați în considerare specificul programării bazate pe evenimente, de exemplu, în loc să faceți „var result = db.query(”select..”);” cu așteptarea finalizării lucrărilor și procesarea ulterioară a rezultatelor, Node.js folosește principiul execuției asincrone, adică. codul este transformat în „db.query(”select..”, function (result) {result processing});”, în care controlul va trece instantaneu la codul suplimentar, iar rezultatul interogării va fi procesat pe măsură ce sosesc datele.

Sursa: opennet.ru

Adauga un comentariu