Plataforma de JavaScript del lado del servidor Node.js 19.0 disponible

Se lanzó Node.js 19.0, una plataforma para ejecutar aplicaciones de red en JavaScript. Node.js 19 es una rama de soporte regular con actualizaciones disponibles hasta junio de 2023. En los próximos días se completará la estabilización de la rama Node.js 18, que recibirá el estado LTS y será compatible hasta abril de 2025. El mantenimiento de la rama LTS anterior de Node.js 16.0 durará hasta septiembre de 2023, y el año anterior a la última rama LTS 14.0 hasta abril de 2023.

Principales mejoras:

  • El motor V8 ha sido actualizado a la versión 10.7, utilizada en Chromium 107. Entre los cambios en el motor respecto a la rama Node.js 18, se destaca la implementación de la tercera versión de la API Intl.NumberFormat, que agrega nuevas funciones formatRange (), formatRangeToParts() y selectRange(), agrupación de conjuntos, nuevas opciones para redondear y configurar la precisión, la capacidad de interpretar cadenas como números decimales. También se han actualizado las dependencias incluidas llhttp 8.1.0 y npm 8.19.2.
  • Se ha propuesto un comando experimental "node -watch" con la implementación de un modo de vigilancia que garantiza que el proceso se reinicie cuando el archivo importado cambie (por ejemplo, si se ejecuta "node -watch index.js", el proceso será se reinicia automáticamente cuando cambia index.js).
  • Para todas las conexiones HTTP/HTTPS salientes, se habilita la compatibilidad con el mecanismo Keep-Alive de HTTP 1.1, que deja la conexión abierta durante un tiempo determinado para procesar varias solicitudes HTTP dentro de la misma conexión. Se espera que Keep-Alive mejore el rendimiento y el rendimiento. De forma predeterminada, el tiempo de espera de apertura de la conexión está establecido en 5 segundos. Se agregó soporte para analizar el encabezado HTTP Keep-Alive en las respuestas del servidor a la implementación del cliente HTTP y se agregó la desconexión automática de clientes inactivos usando Keep-Alive a la implementación del servidor HTTP Node.js.
  • La API WebCrypto se ha transferido a la categoría estable, con la excepción de las funciones que utilizan los algoritmos Ed25519, Ed448, X25519 y X448. Para acceder al módulo WebCrypto ahora puede usar globalThis.crypto o require('node:crypto').webcrypto.
  • Se ha eliminado el soporte para las herramientas de rastreo DTrace, SystemTap y ETW (Event Tracing para Windows), cuyo mantenimiento se consideró inadecuado debido a la complejidad de mantenerlo actualizado al no existir un plan de soporte adecuado.

La plataforma Node.js se puede utilizar tanto para el mantenimiento de servidores de aplicaciones web como para crear programas regulares de red de clientes y servidores. Para ampliar la funcionalidad de las aplicaciones para Node.js, se ha preparado una gran colección de módulos, en la que se pueden encontrar módulos con la implementación de servidores y clientes HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, módulos para integración con varios marcos web, controladores WebSocket y Ajax, conectores DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motores de plantillas, motores CSS, implementaciones de algoritmos criptográficos y sistemas de autorización (OAuth), analizadores XML.

Para garantizar el procesamiento de una gran cantidad de solicitudes paralelas, Node.js utiliza un modelo de ejecución de código asíncrono basado en el manejo de eventos sin bloqueo y la definición de controladores de devolución de llamada. Los métodos admitidos para multiplexar conexiones son epoll, kqueue, /dev/poll y select. Para la multiplexación de conexiones, se utiliza la biblioteca libuv, que es un complemento para libev en sistemas Unix e IOCP en Windows. La biblioteca libeio se utiliza para crear un grupo de subprocesos y c-ares está integrado para realizar consultas de DNS en modo sin bloqueo. Todas las llamadas al sistema que causan el bloqueo se ejecutan dentro del conjunto de subprocesos y luego, como controladores de señales, transfieren el resultado de su trabajo a través de una tubería sin nombre (tubería). La ejecución de código JavaScript se proporciona mediante el uso del motor V8 desarrollado por Google (además, Microsoft está desarrollando una versión de Node.js con el motor Chakra-Core).

En esencia, Node.js es similar a los marcos Perl AnyEvent, Ruby Event Machine, Python Twisted y la implementación de eventos Tcl, pero el bucle de eventos en Node.js está oculto para el desarrollador y se asemeja al manejo de eventos en una aplicación web que se ejecuta en el navegador. Al escribir aplicaciones para node.js, debe tener en cuenta las especificaciones de la programación basada en eventos, por ejemplo, en lugar de hacer "var result = db.query("select..");" con la espera de la finalización del trabajo y el posterior procesamiento de los resultados, Node.js utiliza el principio de ejecución asíncrona, es decir, el código se transforma en "db.query("select..", function (result) {procesamiento de resultados});", en el que el control pasará instantáneamente a más código, y el resultado de la consulta se procesará a medida que lleguen los datos.

Fuente: opennet.ru

Añadir un comentario