lansare , platforme pentru executarea aplicațiilor de rețea pe JavaScript. În același timp, s-a finalizat stabilizarea versiunii anterioare Node.js 12.x, care a fost mutată în categoria versiunilor cu suport pe termen lung, actualizările pentru acestea fiind lansate timp de 4 ani. Suportul pentru versiunea LTS anterioară Node.js 10.0 va dura până în aprilie 2021, iar pentru versiunea LTS precedentă 8.0 până în ianuarie 2020.
Principalele :
- Motorul V8 a fost actualizat la versiunea , care include noi metode de optimizare a performanței, îmbunătățirea destructurării obiectelor, reducerea consumului de memorie și scurtarea timpului de pregătire pentru execuția WebAssembly;
- Suportul complet pentru internaționalizare și Unicode bazat pe biblioteci este activat implicit (Componente Internaționale pentru Unicode), care permite dezvoltatorilor să scrie cod sprijină
- lucrul cu diferite limbi și locale. Modulul full-icu este acum instalat implicit; , Workers Threads
- permite crearea de bucle de procesare a evenimentelor pe mai multe fire (event loop). Implementarea se bazează pe modulul worker_threads, care permite rularea codului JavaScript în mai multe fire paralele. Suportul stabil pentru API-ul Workers Threads a fost, de asemenea, exportat în versiunea LTS Node.js 12.x; Cerințele pentru platforme au fost crescut. Pentru compilare este necesar acum
- cel puțin macOS 10.11 (se necesită Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
- Suportul pentru Python 3 a fost îmbunătățit. Când există atât Python 2 cât și Python 3 în sistem, Python 2 este folosit în continuare, dar a fost adăugată posibilitatea de compilare cu doar Python 3 disponibil în sistem;
- A fost eliminată vechea implementare a parser-ului HTTP („--http-parser=legacy”). Au fost eliminate sau transformate în apeluri și proprietăți deprecate FSWatcher.prototype.start(), ChildProcess._channel, metoda open() în obiectele ReadStream și WriteStream, request.connection, response.connection, module.createRequireFromPath(); Următoarea
actualizare 13.0.1, în care au fost corectate câteva erori. Printre acestea, a fost rezolvată problema cu avertismentul privind utilizarea unei versiuni nesuportate în npm 6.12.0. , care poate găsi module pentru implementarea serverelor și clienților HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module pentru integrarea cu diferite framework-uri web, gestionari WebSocket și Ajax, conectori pentru SGBD-uri (MySQL, PostgreSQL, SQLite, MongoDB), motoruri de template-uri, 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 folosește un model de execuție a codului asincron, bazat pe gestionarea evenimentelor într-un mod non-blocant și definirea gestionatorilor de callback. Ca metode de multiplexare a conexiunilor, sunt susținute metode precum epoll, kqueue, /dev/poll și select. Pentru multiplexarea conexiunilor se folosește biblioteca , care este un strat deasupra în sistemele Unix și deasupra IOCP în Windows. Pentru a crea un pool de fire de execuție (thread pool), se folosește biblioteca , pentru a efectua cereri DNS într-un mod non-blocant este integrat . Toate apelurile de sistem care generează blocare sunt efectuate în interiorul pool-ului de fire și apoi, la fel ca gestionarii de semnale, transmit rezultatul muncii lor înapoi printr-un canal anonimizat (pipe). Executarea codului JavaScript este asigurată prin utilizarea motorului dezvoltat de Google (în plus, Microsoft dezvoltă o variantă Node.js cu motorul Chakra-Core).
În esență, Node.js este similar cu framework-urile , , și evenimentelor în Tcl, dar ciclul de procesare a evenimentelor (event loop) în Node.js este ascuns de dezvoltator și semează procesarea evenimentelor într-o aplicație web care funcționează în browser. Când scrieți aplicații pentru node.js, trebuie să luați în considerare specificitatea programării orientate pe evenimente, de exemplu, în loc de a executa „var result = db.query(„select..”);” așteptând finalizarea muncii și procesarea ulterioară a rezultatelor, în Node.js se folosește principiul execuției asincrone, adică codul se transformă în „db.query(„select..”, function (result) {procesarea rezultatului});”, unde controlul va trece imediat la codul ulterior, iar rezultatul cererii va fi procesat pe măsură ce datele sosesc.
Sursa: opennet.ro
