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

Se lanzó Node.js 18.0, una plataforma para ejecutar aplicaciones de red en JavaScript. Node.js 18.0 está clasificado como una rama de soporte a largo plazo, pero este estado no se asignará hasta octubre, después de la estabilización. Node.js 18.x será compatible hasta abril de 2025. El mantenimiento de la rama LTS anterior de Node.js 16.x durará hasta abril de 2024, y el año anterior a la última rama LTS 14.x hasta abril de 2023. La rama 12.x LTS se suspenderá el 30 de abril y la rama provisional de Node.js 17.x se suspenderá el 1 de junio.

Principales mejoras:

  • El motor V8 se ha actualizado a la versión 10.1, que se utiliza en Chromium 101. En comparación con la versión 17.9.0 de Node.js, ahora hay soporte para funciones como los métodos findLast y findLastIndex para buscar elementos relativos al final de una matriz y la función Intl.supportedValuesOf. API de configuración regional internacional mejorada. Se ha acelerado la inicialización de campos de clase y métodos privados.
  • La API experimental fetch() está habilitada de forma predeterminada y está diseñada para cargar recursos a través de la red. La implementación se basa en el código del cliente undici HTTP/1.1 y es lo más parecida posible a la API similar proporcionada en los navegadores. Esto incluye soporte para las interfaces FormData, Headers, Request y Response para manipular los encabezados de solicitud y respuesta HTTP. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { datos constantes = esperar res.json(); consola.log(datos); }
  • Se ha agregado una implementación experimental de la API Web Streams, que proporciona acceso a los flujos de datos recibidos a través de la red. La API permite agregar sus propios controladores para trabajar con datos a medida que la información llega a través de la red, sin esperar a que se descargue el archivo completo. Los objetos ahora disponibles en Node.js incluyen ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream y DecompressionStream.
  • La API de Blob se ha movido a estable, lo que le permite encapsular datos sin procesar inmutables para un uso seguro en diferentes subprocesos de trabajo.
  • La API BroadcastChannel se ha estabilizado, lo que le permite organizar el intercambio de mensajes en modo asíncrono en el formato "un remitente, muchos destinatarios".
  • Se agregó el nodo del módulo experimental: prueba para crear y ejecutar pruebas en JavaScript que devuelven resultados en formato TAP (Test Anything Protocol).
  • Se proporciona la generación de ensamblajes listos para usar para Red Hat Enterprise Linux (RHEL) 8 y otras distribuciones basadas en Glibc 2.28+, incluidos Debian 10 y Ubuntu 20.04, así como para macOS 10.15+. Debido a problemas con la compilación del motor V8, la creación de compilaciones de 32 bits para Windows se detuvo temporalmente.
  • Se proporcionó una opción experimental para crear un ejecutable de Node.js con componentes seleccionados por el usuario inicializados al inicio. Para definir los componentes iniciales, se agregó la opción “--node-snapshot-main” al script de compilación de configuración, por ejemplo, “./configure —node-snapshot-main=marked.js; nodo de nombre"

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