Versiunea JavaScript Node.js 14.0 la nivelul serverului

a avut loc eliberare Node.js 14.0,platforme pentru rularea aplicațiilor de rețea în JavaScript. Node.js 14.0 este o ramură de suport pe termen lung, dar acest statut va fi atribuit abia în octombrie, după stabilizare. Node.js 14.0 va fi acceptat efectuate până în aprilie 2023. Întreținerea ramurii LTS anterioare a Node.js 12.0 va dura până în aprilie 2022, iar cu un an înainte de ultima ramură LTS 10.0 până în aprilie 2021. Suportul pentru ramura de staging 13.x se va încheia în iunie a acestui an.

Principalul îmbunătățiri:

  • Abilitatea de a genera din mers sau la apariția anumitor evenimente a fost stabilizată rapoarte de diagnostic, care afișează evenimente care ajută la diagnosticarea problemelor, cum ar fi blocări, degradarea performanței, scurgeri de memorie, încărcare mare a CPU, ieșire de erori neașteptate etc.
  • S-a adăugat suport experimental API Stocare locală asincronă cu implementarea clasei AsyncLocalStorage, care poate fi folosită pentru a crea o stare asincronă cu handlere bazate pe apeluri și promisiuni de apel invers. AsyncLocalStorage vă permite să stocați date în timp ce o solicitare web este procesată, amintind de stocarea locală a firelor în alte limbi.
  • S-a eliminat mesajul de avertizare despre funcția experimentală la încărcare module ECMAScript 6 conectat și exportat folosind instrucțiuni de import și export. În același timp, implementarea modulelor ESM în sine rămâne experimentală.
  • Motor V8 actualizat la versiune 8.1 (1, 2, 3), care include noi optimizări de performanță și caracteristici, cum ar fi noul operator de concatenare logică „???” (returnează operandul din dreapta dacă operandul din stânga este NULL sau nedefinit și invers), operatorul „?.” pentru o verificare unică a întregului lanț de proprietăți sau apeluri (de exemplu, „db?.user?.name?.length” fără verificări preliminare), metoda Intl.DisplayName pentru obținerea numelor localizate etc.
  • A fost efectuată o revizuire a API-urilor Streams, menită să îmbunătățească consistența API-urilor Streams și să elimine diferențele de comportament ale părților de bază ale Node.js. De exemplu, comportamentul http.OutgoingMessage este apropiat de stream.Writable, iar net.Socket este similar cu stream.Duplex. Opțiunea autoDestroy este setată la „true” în mod implicit, ceea ce înseamnă apelarea „_destroy” la finalizare.
  • S-a adăugat suport experimental API AM FOST (Interfața sistemului WebAssembly), oferind interfețe software pentru interacțiunea directă cu sistemul de operare (API POSIX pentru lucrul cu fișiere, socket-uri etc.).
  • Cerințe crescute pentru versiuni minime compilatoare și platforme: macOS 10.13 (High Sierra), GCC 6, Windows mai nou 7/2008R2.

Să reamintim că platforma Node.js poate fi folosită atât pentru suport de server pentru aplicații 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, un număr mare de colecție de module, în care puteți găsi module cu implementare de servere și clienți HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module de integrare cu diverse cadre web, handlere WebSocket și Ajax, conectori la DBMS (MySQL, PostgreSQL, SQLite). , MongoDB ), motoare de șablon, motoare CSS, implementări de algoritmi criptografici și sisteme de autorizare (OAuth), parsere XML.

Pentru a gestiona un număr mare de solicitări paralele, Node.js folosește un model de execuție a codului asincron bazat pe procesarea evenimentelor neblocante și definirea handlerelor de apel invers. Metodele acceptate pentru multiplexarea conexiunilor includ epoll, kqueue, /dev/poll și select. Biblioteca este folosită pentru multiplexarea conexiunilor libuv, care este o suprastructură peste libev pe sisteme Unix și prin IOCP pe Windows. O bibliotecă este folosită pentru a crea un pool de fire libeio, pentru efectuarea de interogări DNS în modul neblocant este integrat c-ari. Toate apelurile de sistem care provoacă blocarea sunt executate în pool-ul de fire și apoi, ca și manipulatorii de semnal, trec rezultatul muncii lor înapoi printr-o conductă fără nume. Executarea codului JavaScript este asigurată prin utilizarea unui motor dezvoltat de Google V8 (În plus, Microsoft dezvoltă o versiune de Node.js cu motorul Chakra-Core).

În esență, Node.js este similar cu cadrele Perl AnyEvent, Ruby Event Machine, Python Twisted и implementare evenimente în 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ă într-un browser. Când scrieți aplicații pentru node.js, este necesar să țineți cont de 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..”, funcția (rezultat) {prelucrare rezultat});”, în care controlul va trece imediat la codul ulterioar, iar rezultatul interogării va fi procesat pe măsură ce sosesc datele. .

Sursa: opennet.ru

Adauga un comentariu