La versió 14.0 de JavaScript del costat del servidor Node.js

tingué lloc alliberament NODE.JS 14.0,plataformes per executar aplicacions de xarxa en JavaScript. Node.js 14.0 és una branca de suport a llarg termini, però aquest estat només s'assignarà a l'octubre, després de l'estabilització. Node.js 14.0 serà compatible portar a terme fins a l'abril de 2023. El manteniment de la branca LTS anterior de Node.js 12.0 durarà fins a l'abril de 2022 i l'any anterior a l'última branca LTS 10.0 fins a l'abril de 2021. El suport per a la branca de preparació 13.x finalitzarà el juny d'aquest any.

El principal millores:

  • S'ha estabilitzat la capacitat de generar sobre la marxa o quan es produeixin determinats esdeveniments informes de diagnòstic, que mostren esdeveniments que ajuden a diagnosticar problemes com ara fallades, degradació del rendiment, fuites de memòria, càrrega elevada de la CPU, sortida d'errors inesperats, etc.
  • S'ha afegit compatibilitat amb l'API experimental Emmagatzematge local asíncron amb la implementació de la classe AsyncLocalStorage, que es pot utilitzar per crear estat asíncron amb controladors basats en trucades i promeses de devolució de trucada. AsyncLocalStorage us permet emmagatzemar dades mentre s'està processant una sol·licitud web, que recorda l'emmagatzematge local de fils en altres idiomes.
  • S'ha eliminat el missatge d'advertència sobre la funció experimental durant la càrrega mòduls ECMAScript 6 connectat i exportat mitjançant declaracions d'importació i exportació. Al mateix temps, la pròpia implementació dels mòduls ESM segueix sent experimental.
  • Motor V8 actualitzat a la versió 8.1 (1, 2, 3), que inclou noves optimitzacions de rendiment i funcions com ara el nou operador de concatenació lògica "???" (retorna l'operand dret si l'operand esquerre és NULL o no està definit, i viceversa), l'operador "?." per a una comprovació única de tota la cadena de propietats o trucades (per exemple, “db?.user?.name?.length” sense comprovacions preliminars), el mètode Intl.DisplayName per obtenir noms localitzats, etc.
  • Es va dur a terme una revisió de l'API de Streams, amb l'objectiu de millorar la coherència de les API de Streams i eliminar les diferències en el comportament de les parts bàsiques de Node.js. Per exemple, el comportament de http.OutgoingMessage és proper a stream.Writable, i net.Socket és similar a stream.Duplex. L'opció autoDestroy s'estableix com a "true" per defecte, el que significa cridar "_destroy" un cop finalitzada.
  • S'ha afegit compatibilitat amb l'API experimental Wasi (Interfície del sistema WebAssembly), proporcionant interfícies de programari per a la interacció directa amb el sistema operatiu (API POSIX per treballar amb fitxers, sòcols, etc.).
  • Augment dels requisits per versions mínimes compiladors i plataformes: macOS 10.13 (High Sierra), GCC 6, Windows més recent 7/2008R2.

Recordem que la plataforma Node.js es pot utilitzar tant per al suport del servidor d'aplicacions web com per crear programes habituals de xarxa de servidor i client. Per ampliar la funcionalitat de les aplicacions per a Node.js, un gran nombre de col·lecció de mòduls, en el qual es poden trobar mòduls amb la implementació de servidors i clients HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, mòduls per a la integració amb diferents frameworks web, gestors WebSocket i Ajax, connectors a DBMS (MySQL, PostgreSQL, SQLite). , MongoDB ), motors de plantilles, motors CSS, implementacions d'algoritmes criptogràfics i sistemes d'autorització (OAuth), analitzadors XML.

Per gestionar un gran nombre de sol·licituds paral·leles, Node.js utilitza un model d'execució de codi asíncron basat en el processament d'esdeveniments sense bloqueig i en la definició de controladors de devolució de trucada. Els mètodes admesos per a la multiplexació de connexions inclouen epoll, kqueue, /dev/poll i select. La biblioteca s'utilitza per multiplexar connexions libuv, que és una superestructura libev en sistemes Unix i per IOCP a Windows. S'utilitza una biblioteca per crear un grup de fils libeio, per realitzar consultes DNS en mode no bloquejador està integrat c-ares. Totes les trucades al sistema que causen bloqueig s'executen dins del grup de fils i després, com els controladors de senyals, tornen el resultat del seu treball a través d'una canonada sense nom. L'execució del codi JavaScript s'assegura mitjançant l'ús d'un motor desenvolupat per Google V8 (A més, Microsoft està desenvolupant una versió de Node.js amb el motor Chakra-Core).

En el seu nucli, Node.js és similar als frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted и implementació esdeveniments a Tcl, però el bucle d'esdeveniments a Node.js està ocult per al desenvolupador i s'assembla a la gestió d'esdeveniments en una aplicació web que s'executa en un navegador. Quan escriu aplicacions per a node.js, cal tenir en compte les especificitats de la programació basada en esdeveniments, per exemple, en lloc de fer "var resultat = db.query("select..");" amb l'espera de la finalització del treball i el processament posterior dels resultats, Node.js utilitza el principi d'execució asíncrona, és a dir. el codi es transforma en “db.query(“seleccionar..”, funció (resultat) {processament de resultats});”, en el qual el control passarà immediatament a més codi i el resultat de la consulta es processarà a mesura que arribin les dades. .

Font: opennet.ru

Afegeix comentari