35

¿Qué hay nuevo en versión 18 de NodeJS?

33833Puntos

hace 2 años

Hola, hoy te vengo a contar sobres grandes novedades que nos trae NodeJS su versión 18 🎉.


Nos vamos a centrar en tres características que han alegrado a toda la comunidad en general.

  • Soporte experimental para fetch.
  • Un propio test runner.
  • El motor de V8 en la versión 10.1.

Recordemos que NodeJS es un runtime de JavaScript construido sobre el motor de Google V8 que nos permite ejecutar JavaScript en cualquier lugar y normalmente cuenta con dos versiones, una que es la versión LTS (Soporte a largo plazo) y otra que es la más actual, en este caso la versión 18.

img

Soporte experimental para fetch

Esta es la característica que más ha gustado a la comunidad ya que por fin podremos usar la función fetch dentro del contexto de NodeJS. Recuerda que JavaScript puede correr de forma directa en un navegador y en ese contexto es muy natural usar la función fetch para hacer peticiones, por ejemplo a alguna API de la siguiente manera:

functiongetProducts() {
  fetch('https://api.escuelajs.co/api/v1/products')
    .then(response => response.json())
    .then(data => console.log(data));
}

Con el código de arriba puedes hacer una solicitud y poder obtener el resultado, también lo puedes implementar usando el modo async/await, de la siguiente manera:

asyncfunctiongetProducts() {
  const response = await fetch('https://api.escuelajs.co/api/v1/products');
  const data = await response.json();
  console.log(data);
}

En los ejemplos vistos anteriormente vemos la forma más normal de hacerlo PERO solo funciona en los navegadores, es decir que no se podía usar en otros contextos, por ejemplo del lado del servidor en donde también queremos hacer peticiones o conectarnos a otros servicios por medio de fetch.

Pero ahora en la versión 18 se está trabajando en el soporte experimental para que fetch se pueda ejecutar. Esta sería la manera de hacerlo con NodeJS:

const res = await fetch('https://api.escuelajs.co/api/v1/products');
if (res.ok) {
  const data = await res.json();
  console.log(data);
}

Así que ahora vamos a poder solicitudes usando fetch como en los navegadores.

Un propio test runner.

Hacer pruebas es de vital importancia en nuestros sistemas y es la manera correcta en la cual podemos gestionar el riesgo de que ocurran errores en producción, normalmente para escribir pruebas en NodeJS usamos librerías muy comunes como Jest, AVA, Supertest, MochaJS etc. Pero ahora desde la versión 18, NodeJS tiene una forma nativa de implementar pruebas, la forma de usar esta nueva API es de la siguiente manera:

import test from'node:test';
import assert from'node:assert';

test('synchronous passing test', (t) => {
  // This test passes because it does not throw an exception.
  assert.strictEqual(1, 1);
});

test('synchronous failing test', (t) => {
  // This test fails because it throws an exception.
  assert.strictEqual(1, 2);
});

También es posible usar el contexto de la función test() para crear sub pruebas, de la siguiente manera:

import test from'node:test';
import assert from'node:assert';

test('top level test', async (t) => {
  await t.test('subtest 1', (t) => {
    assert.strictEqual(1, 1);
  });

  await t.test('subtest 2', (t) => {
    assert.strictEqual(2, 2);
  });
});

Debes tener en cuenta que este módulo de pruebas en especial tiene el prefijo node: a la hora de importarlo, si no lo haces de esta manera NodeJS tratará de buscar el paquete test como paquete externo dentro de tus node_modules.

El motor de V8 en la versión 10.1

En esta versión 18 de NodeJS se soporta la versión 10.1 del motor de V8, el cual trae las siguientes características:

¿Qué te parecen estas características que nos trae la versión 18 de NodeJS? 👇 Te leo los comentarios.

Nicolas
Nicolas
nicobytes

33833Puntos

hace 2 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
1
14763Puntos

antes no soportaba fetch?

1
16681Puntos

¿Habrá unpost con las diferencias entre React 17 y 18? Sé que se cambió el enrutamiento y el switch, pero no sé qué más introdujo esta nueva versión,

2
22812Puntos
2 años

Pero eso me imagino que hablas de la libreria react Router

1
16681Puntos
2 años

ReactDOM.render method, indeed.

1
33541Puntos

uff super bien que ya vamos a poder usar fetch

1
6184Puntos

Gracias por el post , las características nuevas se ve genial

1
5044Puntos

Gracias Nicolás por el post, interesante, Saludos 😉