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

Es va llançar Node.js 16.0, una plataforma per executar aplicacions de xarxa en JavaScript. Node.js 16.0 es classifica com a branca de suport a llarg termini, però aquest estat només s'assignarà a l'octubre, després de l'estabilització. Node.js 16.0 serà compatible fins a l'abril de 2023. El manteniment de la branca LTS anterior de Node.js 14.0 durarà fins a l'abril de 2023 i l'any anterior a l'última branca LTS 12.0 fins a l'abril de 2022. El suport per a la branca 10.0 LTS s'interromprà d'aquí a 10 dies.

Principals millores:

  • El motor V8 s'ha actualitzat a la versió 9.0 (Node.js 15 utilitza la versió 8.6), que permet la implementació de funcions com la propietat "índexs" per a expressions regulars (inclou una matriu amb les posicions inicials i finals dels grups de coincidències) , el mètode Atomics a Node.js 16 .waitAsync (versió asíncrona d'Atomics.wait), suport per utilitzar la paraula clau await als mòduls de nivell superior. Les crides a funcions s'han accelerat en situacions en què el nombre d'arguments passats no es correspon amb els paràmetres definits a la funció.
  • L'API Timers Promises s'ha estabilitzat, proporcionant un conjunt alternatiu de funcions per treballar amb temporitzadors que retornen objectes Promise com a sortida, la qual cosa elimina la necessitat d'utilitzar util.promisify(). importar { setTimeout } de 'temporitzadors/promeses'; funció async run() { await setTimeout (5000); console.log('Hola, món!'); } correr();
  • S'ha afegit una implementació experimental de la Web Crypto API, dissenyada per realitzar operacions criptogràfiques bàsiques al costat de les aplicacions web, com ara manipular hash criptogràfics, generar i verificar signatures digitals, codificar i descodificar dades mitjançant diversos mètodes de xifratge i generar criptogràficament segurs. nombres aleatoris. L'API també proporciona funcions per generar i gestionar claus.
  • N-API (API per desenvolupar complements) s'ha actualitzat a la versió 8.
  • S'ha fet la transició a la nova versió del gestor de paquets NPM 7.10.
  • S'ha estabilitzat la implementació de la classe AbortController, que es basa en l'API web AbortController i permet cancel·lar senyals a les API basades en Promeses seleccionades.
  • S'ha estabilitzat el suport per a la tercera versió del format Source Map, utilitzat per comparar mòduls generats, processats o empaquetats amb el codi font original.
  • Per a la compatibilitat amb les API web heretades, s'han afegit els mètodes buffer.atob(data) i buffer.btoa(data).
  • Ha començat la formació de conjunts per a nous dispositius Apple equipats amb el xip M1 ARM.
  • A la plataforma Linux, els requisits de la versió del compilador s'han elevat a GCC 8.3.

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, s'ha preparat una gran col·lecció de mòduls, en els quals 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 diversos 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 garantir el processament d'un gran nombre de sol·licituds paral·leles, Node.js utilitza un model d'execució de codi asíncron basat en la gestió d'esdeveniments sense bloqueig i la definició de gestors de devolució de trucada. Els mètodes admesos per a la multiplexació de connexions són epoll, kqueue, /dev/poll i select. Per a la multiplexació de connexions, s'utilitza la biblioteca libuv, que és un complement per a libev en sistemes Unix i IOCP a Windows. La biblioteca libeio s'utilitza per crear un grup de fils, c-ares s'integra per realitzar consultes DNS en mode sense bloqueig. Totes les trucades al sistema que causen bloqueig s'executen dins del grup de fils i després, com els controladors de senyals, transfereixen el resultat del seu treball de nou a través d'una canonada sense nom (pipe). L'execució del codi JavaScript es proporciona mitjançant l'ús del motor V8 desenvolupat per Google (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 marcs Perl AnyEvent, Ruby Event Machine, Python Twisted i la implementació d'esdeveniments 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. al navegador. Quan escriviu aplicacions per a node.js, heu de 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à instantàniament a més codi i el resultat de la consulta es processarà a mesura que arribin les dades.

A més, es pot assenyalar que l'empresa Deno, fundada pel creador de Node.js per desenvolupar la plataforma Deno de nova generació, va rebre 4.9 milions de dòlars en inversions. En el seu propòsit, Deno és similar a Node.js, però intenta eliminar els errors conceptuals comesos a l'arquitectura Node.js i proporcionar als usuaris un entorn més segur. Cal assenyalar que les solucions empresarials de Deno es basaran en productes completament oberts, i el model Open Core amb funcionalitat de pagament independent es percep com a inacceptable per a la plataforma Deno.

Font: opennet.ru

Afegeix comentari