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.
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.
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.
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
.
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.
Con el post me anime a ver el curso ! 😏.
Gracias por el post , las características nuevas se ve genial
¿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,
Pero eso me imagino que hablas de la libreria react Router
ReactDOM.render method, indeed.
uff super bien que ya vamos a poder usar fetch
antes no soportaba fetch?
Gracias Nicolás por el post, interesante, Saludos 😉