Lanzamiento de Node.js 14.0 de JavaScript del lado del servidor

tuvo lugar relizar Node.js 14.0,plataformas para ejecutar aplicaciones de red en JavaScript. Node.js 14.0 es una rama de soporte a largo plazo, pero este estado solo se asignará en octubre, después de la estabilización. Node.js 14.0 será compatible ser llevado a cabo hasta abril de 2023. El mantenimiento de la rama LTS anterior de Node.js 12.0 durará hasta abril de 2022, y el año anterior a la última rama LTS 10.0 hasta abril de 2021. El soporte para la rama provisional 13.x finalizará en junio de este año.

El principal mejoras:

  • Se ha estabilizado la capacidad de generar sobre la marcha o ante la ocurrencia de ciertos eventos. informes de diagnóstico, que muestra eventos que ayudan a diagnosticar problemas como fallas, degradación del rendimiento, pérdidas de memoria, carga pesada de CPU, salida de errores inesperados, etc.
  • Se agregó soporte API experimental. Almacenamiento local asíncrono con la implementación de la clase AsyncLocalStorage, que se puede utilizar para crear un estado asincrónico con controladores basados ​​en llamadas de devolución de llamada y promesas. AsyncLocalStorage le permite almacenar datos mientras se procesa una solicitud web, lo que recuerda al almacenamiento local de subprocesos en otros idiomas.
  • Se eliminó el mensaje de advertencia sobre la función experimental al cargar módulos ECMAScript 6 conectado y exportado mediante declaraciones de importación y exportación. Al mismo tiempo, la implementación de los módulos ESM sigue siendo experimental.
  • Motor V8 actualizado a la versión 8.1 (1, 2, 3), que incluye nuevas optimizaciones de rendimiento y características como el nuevo operador de concatenación lógica "??" (devuelve el operando derecho si el operando izquierdo es NULL o no está definido, y viceversa), el operador "?." para una verificación única de toda la cadena de propiedades o llamadas (por ejemplo, “db?.user?.name?.length” sin verificaciones preliminares), el método Intl.DisplayName para obtener nombres localizados, etc.
  • Se realizó una revisión de la API de Streams, orientada a mejorar la consistencia de las API de Streams y eliminar diferencias en el comportamiento de las partes básicas de Node.js. Por ejemplo, el comportamiento de http.OutgoingMessage es similar al de stream.Writable, y net.Socket es similar al de stream.Duplex. La opción autoDestroy está configurada en "true" de forma predeterminada, lo que significa llamar a "_destroy" al finalizar.
  • Se agregó soporte API experimental. WASI (Interfaz del sistema WebAssembly), proporcionando interfaces de software para la interacción directa con el sistema operativo (API POSIX para trabajar con archivos, sockets, etc.).
  • Mayores requisitos para versiones mínimas compiladores y plataformas: macOS 10.13 (High Sierra), GCC 6, Windows más reciente 7/2008R2.

Recordemos que la plataforma Node.js se puede utilizar tanto para el soporte del servidor de aplicaciones web como para la creación de programas de red de cliente y servidor comunes. Para ampliar la funcionalidad de las aplicaciones para Node.js, una gran cantidad de colección de módulos, en el que puede 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 frameworks web, manejadores WebSocket y Ajax, conectores a DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), motores de plantillas, motores CSS, implementaciones de algoritmos criptográficos y sistemas de autorización (OAuth), analizadores XML.

Para manejar una gran cantidad de solicitudes paralelas, Node.js utiliza un modelo de ejecución de código asincrónico basado en el procesamiento de eventos sin bloqueo y la definición de controladores de devolución de llamada. Los métodos admitidos para multiplexar conexiones incluyen epoll, kqueue, /dev/poll y select. La biblioteca se utiliza para multiplexar conexiones. libuv, que es una superestructura sobre libre en sistemas Unix y sobre IOCP en Windows. Se utiliza una biblioteca para crear un grupo de subprocesos. libéio, para realizar consultas DNS en modo sin bloqueo está integrado c-are. Todas las llamadas al sistema que causan el bloqueo se ejecutan dentro del grupo de subprocesos y luego, al igual que los manejadores de señales, pasan el resultado de su trabajo a través de una tubería sin nombre. La ejecución del código JavaScript está garantizada mediante el uso de un motor desarrollado por Google. V8 (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 cualquier evento, Máquina de eventos Ruby, Python retorcido и implementación eventos en 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 un navegador. Al escribir aplicaciones para node.js, es necesario tener en cuenta las características específicas de la programación basada en eventos, por ejemplo, en lugar de hacer “var result = db.query(“select..”);” Al esperar la finalización del trabajo y el posterior procesamiento de los resultados, Node.js utiliza el principio de ejecución asincrónica, es decir. el código se transforma en “db.query(“select..”, function (resultado) {procesamiento de resultados});”, en el que el control pasará inmediatamente a otro código y el resultado de la consulta se procesará a medida que lleguen los datos. .

Fuente: opennet.ru

Añadir un comentario