← Node.js: JavaScript fuera del navegador

Sesión 1 · Semana 1

Qué es Node y qué cambia

Hoy · Hoja de ruta

  1. 1. Aprende: Qué es Node.js, qué desaparece y qué aparece respecto al navegador.
  2. 2. Haz: Instala, comprueba la versión y ejecuta tus primeros programas.
  3. 3. Comprueba: Sabes qué código de la UD3 funciona aquí y cuál no.

Antes de empezar · 5 minutos, sin apuntes

  1. ¿Qué partes de tu código de la UD4 crees que no funcionarán fuera del navegador?
  2. ¿Y cuáles funcionarán sin tocar nada?
  3. ¿Quién ejecuta el código de un servidor, y durante cuánto tiempo?

Un motor sin navegador

Node.js es el motor de JavaScript de Chrome, sacado del navegador y empaquetado como un programa que puedes ejecutar en tu máquina. Alrededor le añadieron lo que un navegador no le deja hacer: acceso al sistema de ficheros, a la red y a los procesos del sistema.

node --version
node -e "console.log('Hola desde Node')"
node src/hola.js

Existe también un modo interactivo, equivalente a la consola del navegador: la orden node sin argumentos abre un intérprete donde se evalúan expresiones.

Lo que ya no existe

document.querySelector("h1");   // ReferenceError: document is not defined
window.localStorage;            // ReferenceError
alert("Hola");                  // ReferenceError

No es que estén rotos: es que no tienen sentido. No hay documento ni ventana. Todo el módulo catalogo.js de la UD3, en cambio, funciona aquí sin cambiar una coma, porque solo trabaja con datos. Ese es, otra vez, el premio de haber separado la lógica de la página.

Lo que aparece

process.argv;              // los argumentos de la llamada
process.env;               // las variables de entorno
process.exit(1);           // terminar con un código
process.cwd();             // desde dónde se ejecutó
console.log(import.meta.url);   // el fichero actual

Los módulos del sistema se importan con el prefijo node::

import { readFile } from "node:fs/promises";
import path from "node:path";
import http from "node:http";

El prefijo node:

Deja claro que el módulo es del propio Node y no una dependencia descargada. Sin él también funciona, pero con él nadie puede confundir tu importación con un paquete externo instalado por alguien.

Un programa que empieza y termina

Un programa de Node no es una página

Una página vive mientras esté abierta y reacciona a lo que hace una persona. Un programa de Node se ejecuta, hace su trabajo y termina; salvo que sea un servidor, y entonces se queda escuchando hasta que alguien lo pare.

De ahí una diferencia práctica: un fallo en el navegador estropea la experiencia de quien visita la web; un fallo no capturado en un servidor puede tumbarlo para todo el mundo a la vez.

Tarea 1 · Primeros programas

  1. Comprueba tu versión de Node; debe ser 22 o superior.
  2. Crea src/hola.js que salude e imprima la versión desde process.version.
  3. Copia tu catalogo.js de la UD3 y ejecuta sus funciones desde Node.
  4. Intenta usar document y anota el error exacto.
  5. Imprime process.cwd() ejecutando desde dos carpetas distintas y explica la diferencia.
  6. Prueba el modo interactivo con tres expresiones.
Objetivo mínimoNode instalado, dos programas ejecutados y las funciones de la UD3 funcionando.
Si lo tienesEscribe un programa que muestre un resumen del catálogo por consola.
RetoHaz una lista de qué partes de tu proyecto de la UD4 funcionarían aquí y cuáles no, con la razón.

Checkpoint · fin de la sesión 1

  • Ejecutas programas desde la terminal.
  • Explicas qué desaparece y qué aparece respecto al navegador.
  • Reutilizas sin cambios la lógica de la UD3.
  • Importas módulos del sistema con el prefijo node:.

Antes de cerrar · 2 minutos, sin mirar

  1. ¿Por qué no existe document en Node?
  2. ¿Qué guarda process.argv?
  3. ¿Qué indica el prefijo node: en una importación?
Ver respuestas

1 · Porque no hay documento: Node ejecuta JavaScript sin navegador.

2 · Los argumentos con los que se llamó al programa, empezando por el ejecutable y el fichero.

3 · Que el módulo es del propio Node y no una dependencia instalada.