Plataforma JavaScript del costat del servidor Node.js 19.0 disponible

Es va llançar Node.js 19.0, una plataforma per executar aplicacions de xarxa en JavaScript. Node.js 19 és una branca de suport habitual amb actualitzacions disponibles fins al juny de 2023. En els propers dies es completarà l'estabilització de la branca Node.js 18, que rebrà l'estat de LTS i tindrà suport fins a l'abril de 2025. El manteniment de la branca LTS anterior de Node.js 16.0 durarà fins al setembre de 2023 i l'any anterior a l'última branca LTS 14.0 fins a l'abril de 2023.

Principals millores:

  • El motor V8 s'ha actualitzat a la versió 10.7, utilitzada a Chromium 107. Entre els canvis en el motor respecte a la branca Node.js 18, es destaca la implementació de la tercera versió de l'API Intl.NumberFormat, que afegeix noves funcions formatRange (), formatRangeToParts() i selectRange(), agrupació de conjunts, noves opcions per arrodonir i definir la precisió, la capacitat d'interpretar les cadenes com a nombres decimals. També s'han actualitzat les dependències incloses llhttp 8.1.0 i npm 8.19.2.
  • S'ha proposat una ordre experimental "node -watch" amb la implementació d'un mode de vigilància que garanteix que el procés es reinicia quan canvia el fitxer importat (per exemple, si s'executa "node -watch index.js", el procés serà es reinicia automàticament quan canvia index.js).
  • Per a totes les connexions HTTP/HTTPS sortints, s'ha activat el suport per al mecanisme Keep-Alive HTTP 1.1, que deixa la connexió oberta durant un temps determinat per processar diverses sol·licituds HTTP dins de la mateixa connexió. S'espera que Keep-Alive millori el rendiment i el rendiment. De manera predeterminada, el temps d'espera d'obertura de la connexió està establert en 5 segons. S'ha afegit suport per analitzar la capçalera HTTP Keep-Alive a les respostes del servidor a la implementació del client HTTP i s'ha afegit la desconnexió automàtica de clients inactius amb Keep-Alive a la implementació del servidor HTTP Node.js.
  • L'API WebCrypto s'ha transferit a la categoria estable, amb l'excepció de les funcions que utilitzen els algorismes Ed25519, Ed448, X25519 i X448. Per accedir al mòdul WebCrypto ara podeu utilitzar globalThis.crypto o require('node:crypto').webcrypto.
  • S'ha eliminat el suport per a les eines de traça DTrace, SystemTap i ETW (Traça d'esdeveniments per a Windows), el manteniment de les quals es va considerar inadequat a causa de la complexitat de mantenir-lo actualitzat en absència d'un pla de suport adequat.

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