Está disponible la plataforma de servidor JavaScript Node.js 18.0.

Se ha lanzado Node.js 18.0, una plataforma para ejecutar aplicaciones de red en JavaScript. Node.js 18.0 se clasifica en las ramas de soporte a largo plazo, pero este estatus se otorgará sólo en octubre, después de completar la estabilización. El soporte para Node.js 18.x se llevará a cabo hasta abril de 2025. El mantenimiento de la anterior rama LTS Node.js 16.x continuará hasta abril de 2024, y la penúltima rama LTS 14.x hasta abril de 2023. El soporte de la rama LTS 12.x finalizará el 30 de abril, y el de la rama intermedia Node.js 17.x el 1 de junio.

Principales mejoras:

  • El motor V8 se ha actualizado a la versión 10.1, utilizada en Chromium 101. En comparación con la versión Node.js 17.9.0, se ha agregado soporte para funcionalidades como los métodos findLast y findLastIndex para buscar elementos desde el final del arreglo, así como para la función Intl.supportedValuesOf. Se ha mejorado la API Intl.Locale. Se ha acelerado la inicialización de campos de clases y métodos privados.
  • Se ha incluido por defecto la API experimental fetch(), destinada a cargar recursos a través de la red. La implementación se basa en el código del cliente HTTP/1.1 undici y está lo más cerca posible de la API equivalente proporcionada en los navegadores. También se ha garantizado el soporte para las interfaces FormData, Headers, Request y Response para manipular los encabezados HTTP de solicitudes y respuestas. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • Se ha añadido una implementación experimental de la API Web Streams, que proporciona acceso a flujos de datos obtenidos a través de la red. Esta API permite agregar tus propios manejadores para trabajar con los datos a medida que la información llega, sin esperar a que se cargue todo el archivo. En Node.js ahora están disponibles objetos como ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream y DecompressionStream.
  • Se ha trasladado a estable la API Blob, que permite encapsular datos en crudo inmutables para su uso seguro en diferentes hilos de trabajo.
  • Se ha trasladado a estable la API BroadcastChannel, que permite organizar el intercambio de mensajes de manera asíncrona en el formato "un emisor - muchos receptores".
  • Se ha añadido un módulo experimental node:test para crear y ejecutar pruebas en JavaScript, que devuelven resultados en formato TAP (Test Anything Protocol).
  • Se ha asegurado la formación de compilaciones listas para Red Hat Enterprise Linux (RHEL) 8 y otras distribuciones basadas en Glibc 2.28+, incluyendo Debian 10 y Ubuntu 20.04, así como para macOS 10.15+. Debido a problemas con la compilación del motor V8, se ha suspendido temporalmente la formación de compilaciones de 32 bits para Windows.
  • Se ha proporcionado una funcionalidad experimental para compilar un archivo ejecutable de Node.js con componentes seleccionados por el usuario, inicializándolos al inicio. Para determinar los componentes de inicio, se ha añadido la opción "--node-snapshot-main" al script de configuración, por ejemplo, ".\/configure --node-snapshot-main=marked.js; name node"

La plataforma Node.js puede utilizarse tanto para el soporte del trabajo de aplicaciones web en el servidor como para crear programas de red simples para clientes y servidores. Para ampliar la funcionalidad de las aplicaciones de Node.js, se ha preparado una gran colección de módulos, donde se pueden encontrar módulos con la implementación servidores y clientes HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, módulos para integración con varios frameworks web, manejadores de WebSocket y Ajax, conectores a bases de datos (MySQL, PostgreSQL, SQLite, MongoDB), sistemas de plantillas, motores CSS, implementaciones de algoritmos criptográficos y sistemas de autorización (OAuth), analizadores XML.

Para garantizar el procesamiento de un gran número de solicitudes paralelas, Node.js utiliza un modelo asíncrono para la ejecución de código, basado en el manejo de eventos en modo no bloqueante y la definición de manejadores de callback. Se soportan métodos de multiplexión de conexiones como epoll, kqueue, \/dev\/poll y select. Para la multiplexión de conexiones se utiliza la biblioteca libuv, que es una capa superior a libev en sistemas Unix y a IOCP en Windows. Para crear un grupo de hilos se utiliza la biblioteca libeio, y para realizar consultas DNS en modo no bloqueante se integra c-ares. Todas las llamadas al sistema que causan bloqueo se llevan a cabo dentro del grupo de hilos y luego, al igual que los manejadores de señales, envían el resultado de su trabajo de vuelta a través de un canal anónimo (pipe). La ejecución de código JavaScript se garantiza mediante el uso del motor V8 desarrollado por Google (además, Microsoft desarrolla una variante de Node.js con el motor Chakra-Core).

En esencia, Node.js es similar a los frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted y la implementación de eventos en Tcl, pero el ciclo de manejo de eventos (event loop) en Node.js está oculto al desarrollador y se asemeja al manejo de eventos en una aplicación web ejecutándose en un navegador. Al escribir aplicaciones para Node.js, es necesario tener en cuenta la especificidad de la programación orientada a eventos, por ejemplo, en lugar de ejecutar "var result = db.query('select..');" esperando a que termine y luego procesar 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) {procesar resultado});", donde el control se transfiere de inmediato al código siguiente, y el resultado de la consulta se procesará a medida que lleguen los datos.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster