Plataforma JavaScript del costat del servidor Node.js 18.0 disponible

Es va llançar Node.js 18.0, una plataforma per executar aplicacions de xarxa en JavaScript. Node.js 18.0 es classifica com una branca de suport a llarg termini, però aquest estat només s'assignarà a l'octubre, després de l'estabilització. Node.js 18.x serà compatible fins a l'abril de 2025. El manteniment de la branca LTS anterior de Node.js 16.x durarà fins a l'abril de 2024 i l'any anterior a l'última branca LTS 14.x fins a l'abril de 2023. La branca 12.x LTS s'interromprà el 30 d'abril i la branca de prova Node.js 17.x s'aturarà l'1 de juny.

Principals millores:

  • El motor V8 s'ha actualitzat a la versió 10.1, que s'utilitza a Chromium 101. En comparació amb la versió 17.9.0 de Node.js, ara hi ha suport per a funcions com els mètodes findLast i findLastIndex per trobar elements relatius al final de una matriu i la funció Intl.supportedValuesOf. API Intl.Locale millorada. S'ha accelerat la inicialització de camps de classe i mètodes privats.
  • L'API experimental fetch() està activada per defecte, dissenyada per carregar recursos a la xarxa. La implementació es basa en el codi del client HTTP/1.1 undici i s'acosta el més possible a l'API similar proporcionada als navegadors. Això inclou suport per a les interfícies FormData, Headers, Request i Response per manipular les capçaleres de sol·licituds i respostes HTTP. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(dades); }
  • S'ha afegit una implementació experimental de l'API de Web Streams, que proporciona accés als fluxos de dades rebuts a través de la xarxa. L'API permet afegir els vostres propis controladors per treballar amb dades a mesura que la informació arriba a la xarxa, sense esperar que es descarregui tot el fitxer. Els objectes que ara estan disponibles a Node.js inclouen ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream i DecompressionStream.
  • L'API Blob s'ha mogut a estable, la qual cosa us permet encapsular dades en brut immutables per a un ús segur en diferents fils de treball.
  • L'API BroadcastChannel s'ha fet estable, la qual cosa us permet organitzar l'intercanvi de missatges en mode asíncron en el format "un remitent - molts destinataris".
  • S'ha afegit el mòdul experimental node:test per crear i executar proves en JavaScript que retornen resultats en format TAP (Protocol de prova qualsevol).
  • Es proporciona la generació d'assemblatges ja fets per a Red Hat Enterprise Linux (RHEL) 8 i altres distribucions basades en Glibc 2.28+, incloent Debian 10 i Ubuntu 20.04, així com per a macOS 10.15+. A causa de problemes amb la compilació del motor V8, la creació de compilacions de 32 bits per a Windows s'ha aturat temporalment.
  • Va proporcionar una opció experimental per crear un executable Node.js amb components seleccionats per l'usuari inicialitzats a l'inici. Per definir els components inicials, s'ha afegit l'opció "--node-snapshot-main" a l'script de compilació de configuració, per exemple, "./configure —node-snapshot-main=marked.js; nom de node"

La plataforma Node.js es pot utilitzar tant per al manteniment del servidor d'aplicacions web com per a la creació de programes habituals de xarxa de client i servidor. 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 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.

Font: opennet.ru

Afegeix comentari