En abril de 2022, se emitió el lanzamiento de NodeJS Node v18. La actualización de Node v18 ha sido una de las actualizaciones más esperadas desde Node v14, que agregó API de almacenamiento local asíncrono, una interfaz de sistema de ensamblaje web (WASI) y soporte para módulos ECMAScript.

La actualización v18 agrega varias mejoras a NodeJS, incluida una API de recuperación habilitada globalmente de forma predeterminada, soporte de API de transmisión web y un módulo principal de ejecución de pruebas. Aquí cubrimos la mayoría de los cambios significativos en NodeJS en v18.

1. La API de obtención

La API de recuperación proporciona una interfaz para acceder y manipular solicitudes y respuestas HTTP. Antes de NodeJS v18, las solicitudes HTTP realizadas con NodeJS requerían bibliotecas de terceros como axios y búsqueda de nodo o lo complicado http o https paquete.

NodeJS v18 hace que la API de búsqueda esté disponible en el ámbito global de forma predeterminada. La API de búsqueda global elimina la necesidad de bibliotecas de terceros como

instagram viewer
axios y el código detallado asociado con el https paquete al buscar recursos asincrónicamente a través de una red.

Aquí hay un ejemplo del uso de la API:

constante obtenerDatos = asíncronofunción () {
probar {
constante resolución = esperar buscar("https://example.com/users");
constante datos = esperar res.json();
consola.Dato de registro);
} captura (error) {
consola.Iniciar sesión(`Algo salió mal, ${error}`);
}
};
obtener datos();

los obtener datos La función anterior envía un OBTENER solicitud para obtener los recursos de " https://example.com/users". La API de búsqueda también toma un segundo parámetro opcional, un objeto de opciones. Los objetos de opciones deben contener detalles sobre la solicitud. Por ejemplo:

constante datos de usuario = {
nombre: "jon nieve",
edad: 25,
género: "METRO",
};
constante postData = asíncronofunción (datos) {
probar {
constante resolución = esperar buscar("https://ejemplo.com/usuarios", {
método: "CORREO",
cuerpo: JSON.stringify (datos),
});
constante datos de respuesta = esperar res.json();
consola.Iniciar sesión(
`La solicitud fue exitosa, aquí están los detalles: ${datos de respuesta}`
);
} captura (error) {
consola.Iniciar sesión(`La solicitud no tuvo éxito, aquí están los detalles: ${error}`);
}
};
postData (datos de usuario);

Aunque la API de búsqueda todavía está experimental, debería funcionar bien para la mayoría de los usuarios.

2. Compatibilidad con la API de flujos web

Piense en aplicaciones multimedia o en tiempo real; este es un caso de uso central de la API de flujos web. La API de flujos web es un conjunto de interfaces que permiten el desglose programático de un gran recurso recibido a través de una red en pequeños fragmentos y luego lo procesa poco a poco.

Un ejemplo de flujo es el cuerpo de respuesta devuelto por un buscar solicitud. El cuerpo de respuesta es del tipo LegibleStream.

NodeJS v18 expone un experimental implementación de la API de flujos web. Con esta actualización, las API de transmisión web ahora están disponibles tanto en el cliente como en el servidor, lo que hace que el desarrollo sea más sencillo.

Puede encontrar una lista de las transmisiones admitidas actualmente en el notas de lanzamiento oficiales.

3. El módulo de ejecutor de pruebas

En versiones anteriores de NodeJS, las pruebas sin bibliotecas de terceros se realizaban con el afirmar biblioteca.

los afirmar La biblioteca facilitó la escritura de pruebas simples, pero tenía limitaciones significativas que dificultaban el trabajo con múltiples conjuntos de pruebas. Estas limitaciones fomentaron la necesidad de bibliotecas de terceros como Jest para ejecutar pruebas más avanzadas.

NodeJS v18 elimina la necesidad de bibliotecas de terceros con la introducción del propio módulo principal de ejecución de pruebas de NodeJS. El ejecutor de pruebas admite características como subpruebas, omisión de pruebas, pruebas de devolución de llamada, etc., al igual que Jest.

Para utilizar el corredor de pruebas, debe importar afirmar de afirmar y prueba de nodo: prueba. Observe la "nodo:" prefijo; es el nuevo protocolo de Node el que distingue los paquetes principales de nodo de los paquetes creados por el usuario.

constanteafirmar = requerir("afirmar");
constante prueba = requerir("nodo: prueba");

Aquí hay un ejemplo de una prueba simple usando el módulo de ejecutor de pruebas:

prueba("Comprobar si las cadenas son iguales", (t) => {
afirmar.strictEqual("prueba", "prueba");
});

Los resultados de la prueba mostrados por el corredor de la prueba estarán en TAP (protocolo de prueba de cualquier cosa) formato. Tenga en cuenta que esta función aún es experimental y puede cambiar en cualquier momento.

4. Otras actualizaciones y correcciones

La actualización de Node v18 también presenta una actualización del motor v8 a la versión 10.1. El motor v8 es el tiempo de ejecución de JavaScript utilizado por NodeJS para ejecutar JavaScript.

La actualización v8 hace que el métodos de matrizbuscarÚltimo y buscarÚltimoÍndice disponible en NodeJS y mejora el rendimiento de los campos de clase y los métodos de clase privada.

NodeJS también expone las siguientes API en el ámbito global en la actualización de Node v18:

  • Gota
  • BrodcastChannel

Actualización a Nodo v18

Con Node v18, puede probar una aplicación completa sin bibliotecas externas, obtener recursos de forma asincrónica sin bibliotecas externas y tener transmisiones web habilitadas en su servidor.

Sin embargo, vale la pena señalar que estas características aún son experimentales y pueden cambiar en cualquier momento. Puede actualizar a NodeJS v18 usando el enlace de descarga oficial.