Novedades de Node.js 21: descubra las últimas funciones y actualizaciones

Publicado: 2024-03-26

Debido a su enorme ecosistema de paquetes, su sólido apoyo comunitario y su compatibilidad multiplataforma, Node.js lo utilizan entre el 1,4% y el 2,22% de los sitios web a nivel mundial. Estos datos representan aproximadamente 30 millones de sitios web [i] .

Durante más de una década, Node.js ha sido un actor crucial en el desarrollo web, proporcionando un lenguaje JavaScript unificado para secuencias de comandos tanto del lado del servidor como del lado del cliente. Su modelo de E/S asíncrono y sin bloqueo garantiza un alto rendimiento y eficiencia, lo que lo hace ideal para manejar conexiones simultáneas.

Además, Node.js aprovecha el tiempo de ejecución de JavaScript V8, lo que resulta en una ejecución rápida. Con la escalabilidad como elemento central, Node.js es ideal para aplicaciones en tiempo real y arquitecturas de microservicios. Todas estas características lo convierten en una opción ideal para los desarrolladores que buscan crear aplicaciones web escalables, eficientes y modernas.

Sin embargo, el 17 de octubre de 2023, se lanzó su última versión Node.js 21 con varias mejoras internas y algunas funciones nuevas para el usuario. Esta actualización priorizó la mejora del rendimiento a través de una ejecución optimizada del tiempo de ejecución y una reducción de la sobrecarga de memoria. Además, incorporó soporte mejorado para módulos ECMAScript y una perfecta integración con las tecnologías web más recientes.

En esta publicación de blog, agregaremos contexto adicional sobre las mejoras destacadas y actualizaciones de funciones en Node.js 21.

¡Vamos a sumergirnos!

9 aspectos destacados de la última versión de Node.js 21

Novedades de Node.js 21: descubra las últimas funciones y actualizaciones

1. Actualizaciones del motor JavaScript V8

Una mejora significativa en Node.js 21 es la actualización del motor V8 a la versión 11.8. Esta actualización no sólo mejora el rendimiento sino que también introduce varias características notables de JavaScript.

Una adición digna de mención es la introducción de la agrupación de matrices, que permite la consolidación de datos similares en grupos mediante el uso de métodos comoObject.groupBy()yMap.groupBy(). Además, se ha introducido una nueva API programática,ArrayBuffer.prototype.transfer, para facilitar la transferencia de propiedad de ArrayBuffers. Esta versión también optimiza las reasignaciones y aborda la conversión de ArrayBuffers de tamaño variable en otros de longitud fija.

Además, la actualización amplía el soporte para WebAssembly con la incorporación de expresiones constantes extendidas, ampliando las capacidades de Node.js para aprovechar los últimos avances en tecnologías web y funcionalidades de JavaScript.

2. Recuperación estable y transmisiones web

Node.js 21 estabiliza las API de búsqueda y WebStreams, haciéndolas pasar de su estado experimental a ser estables y listas para su uso en producción. Si ha estado utilizando estas API en versiones anteriores, ahora puede incorporarlas con confianza en sus flujos de trabajo de producción.

Las API fetch y WebStreams brindan un enfoque contemporáneo y consistente para interactuar con recursos y transmisiones HTTP dentro del entorno Node.js, adhiriéndose a los estándares web establecidos. Esta estabilización garantiza que los desarrolladores implementen estas funciones de una manera confiable y estandarizada para manejar la recuperación y transmisión de datos asincrónica en sus aplicaciones Node.js.

3. Introducción de una nueva bandera experimental para módulos

En la versión Node.js 21, una adición notable es la introducción del indicador–experimental-default-type, diseñado para brindar a los desarrolladores un mayor control sobre el comportamiento predeterminado de los archivos de entrada no designados explícitamente como módulos ES o CommonJS.

En ausencia de esta característica de bandera, dicha entrada se interpretaba convencionalmente como CommonJS. Con la introducción de–experimental-default-type=module, los desarrolladores ahora tienen la opción de activar una implementación integral del módulo ES en escenarios específicos. Esto incluye casos en los que la entrada de cadena se proporciona a través de –eval o STDIN, especialmente si–input-typeno se especifica.

Además, cuando se trata de archivos que terminan en .js o aquellos que carecen de una extensión, la bandera entra en juego cuando no hay un archivo package.json asociado o el campo principal package.json más cercano carece de un campo de 'tipo' (excepto dentro del directorio node_modules ). Esta mejora brinda a los desarrolladores la flexibilidad de experimentar y adoptar módulos ES de manera más amplia, proporcionando un enfoque matizado y personalizable para el manejo de módulos.

4. Cliente Websocket incorporado

En Node.js 21, otra mejora de características notable es la forma de un cliente WebSocket integrado, que presenta una implementación WebSocket experimental compatible con el navegador. Esta característica permite a los desarrolladores interactuar con servidores WebSocket sin problemas dentro de las aplicaciones Node.js. Para habilitar esta funcionalidad, los desarrolladores pueden utilizar elindicador –experimental-websocket.

Sin embargo, es importante tener en cuenta que, al ser una característica experimental, la implementación está sujeta a posibles cambios en versiones futuras a medida que se refina y estabiliza en función de los comentarios de los usuarios y los estándares en evolución. La introducción de un cliente WebSocket integrado simplifica la integración de la comunicación WebSocket en las aplicaciones Node.js. Esto proporciona a los desarrolladores una forma conveniente y estandarizada de establecer y administrar conexiones WebSocket, al tiempo que reconoce la naturaleza evolutiva de esta característica durante la fase experimental.

5. Node.js Test Runner ahora admite globos

La última actualización de Node.js 21 introduce la compatibilidad con globos en el ejecutor de pruebas. Esta mejora permite a los desarrolladores aprovechar las expresiones globales al especificar el parámetro –test, lo que proporciona una forma más potente y flexible de ejecutar pruebas. Con esta característica, los desarrolladores pueden emplear patrones globales versátiles para ejecutar pruebas de manera más eficiente. Por ejemplo, al utilizar un comando comonode –test **/*.test.js, los desarrolladores pueden ejecutar pruebas cómodamente para todos los archivos con la extensión.test.jsen varios directorios. Esta capacidad mejora el proceso de ejecución de pruebas, proporcionando adaptabilidad mejorada y facilidad de uso para los desarrolladores que trabajan en proyectos con diversas estructuras de archivos y configuraciones de prueba.

6. Agregue la opción Flush a la función Fs.writefile()

En Node.js 21, una mejora notable es la adición de la opción 'flush' a la función fs.writeFile. Esta mejora aborda el escenario en el que es posible que los datos escritos en archivos no se vacíen inmediatamente al almacenamiento permanente, lo que podría provocar que operaciones de lectura posteriores recuperen datos obsoletos.

La nueva opción 'descarga', introducida en esta solicitud de extracción (PR), proporciona a los desarrolladores un mayor control sobre el comportamiento de descarga. Cuando está habilitada, esta opción garantiza que los datos se vacíen forzosamente al almacenamiento permanente al finalizar una operación de escritura exitosa. Esta característica es particularmente valiosa en situaciones donde la coherencia inmediata de los datos es crucial, ya que evita la aparición de datos obsoletos y proporciona a los desarrolladores un mecanismo de escritura de archivos más confiable y predecible en las aplicaciones Node.js.

7. Eliminación del gancho de personalización del módulo 'globalPreload'

En Node.js 21, los desarrolladores pueden eliminar el gancho de personalización del módulo 'globalPreload'. En su lugar, se anima a los desarrolladores a utilizar el método de "registro" para enviar datos desde el hilo de la aplicación a los enlaces de personalización, y el enlace de "inicialización" para establecer un canal de comunicación entre los hilos. Este ajuste proporciona un enfoque más estructurado y explícito para la personalización del módulo, iniciando una separación de responsabilidades más clara.

El método de "registro" facilita la transmisión de datos a enlaces de personalización, mientras que el enlace de "inicialización" desempeña un papel en la configuración de canales de comunicación entre subprocesos. Este mecanismo refinado mejora la modularidad general y la capacidad de mantenimiento de las aplicaciones Node.js, alineándose con las mejores prácticas y promoviendo una estructura de código más intuitiva y organizada para los desarrolladores que trabajan con la personalización de módulos.

8. Aplicación del modo estricto de Lil HTTP 9.1.2

Otra actualización de Node.js 21 es llhttp 9.1.2, que aplica un modo estricto de forma predeterminada, lo que garantiza una mayor confiabilidad y seguridad del código. Los cambios incluyen la presencia obligatoria de\r\ndespués de encabezados y fragmentos para un procesamiento de datos consistente. Además, la transmisión de datos después de un mensaje con elencabezado Conexión: cerrarya no está permitida, lo que refuerza la adherencia al protocolo y el manejo de la conexión. Para adaptarse a casos de uso específicos, se introduce el indicador–insecure-http-parser, que brinda a los usuarios la flexibilidad de deshabilitar estos cambios. Estas actualizaciones tienen como objetivo elevar la estabilidad del sistema y la coherencia del procesamiento de datos en las aplicaciones Node.js, lo que incita a los desarrolladores a revisar y ajustar su base de código para una integración perfecta.

9. Integración de objetos 'navegador'

Con la integración de objetos 'navegador', los desarrolladores ahora tienen acceso perfecto a la información de simultaneidad del hardware a través del recién introducido navigator.hardwareConcurrency. Esta mejora alinea más estrechamente a Node.js con los entornos de navegador, proporcionando una forma estandarizada para que los desarrolladores recuperen detalles de simultaneidad de hardware.

Además, con esta incorporación, Node.js se vuelve más versátil, lo que permite a los desarrolladores crear aplicaciones que aprovechen los recursos de hardware de manera más efectiva, ya sea para optimizar el rendimiento o implementar estrategias de procesamiento paralelo.

Tome control de su desarrollo de Node.js con la versión 21

La versión Node.js 21 trae una serie de interesantes mejoras, mejoras y nuevas funciones que prometen mejorar su experiencia de desarrollo. Desde la introducción de un cliente WebSocket integrado hasta la compatibilidad con globs en el ejecutor de pruebas, Node.js 21 proporciona a los desarrolladores herramientas potentes para crear aplicaciones modernas y eficientes. A medida que explora estos avances, recuerde probar la compatibilidad de sus aplicaciones y considerar la posibilidad de actualizarlas, especialmente con el estado de fin de vida útil de Node.js 16, 17 o 19. Teniendo en cuenta la complejidad del proceso de actualización y migración, aquí un socio de desarrollo competente de Node.js podría ser transformador.

¿Listo para mejorar el desarrollo de su aplicación Node.js? ¡Habla con nuestros maestros desarrolladores!

Nuestros expertos en Node.js son expertos en la creación de soluciones web de alto rendimiento, aplicaciones de una sola página y aplicaciones web progresivas. Si desea obtener más información sobre nuestra destreza en el desarrollo de Node.js, escríbanos a [email protected] y nos encargaremos de ello.

Referencias:

[i] Tecnología Bacancy