Saltar al contenido
nodejs.js · devschool

Introducción a Node.js

Lección 2 de 38 · 4 min de lectura · Actualizado el

En esta lección
  1. Instalar Node.js
  2. Ejecutar un archivo
  3. La consola interactiva (REPL)
  4. Qué hay y qué no hay en Node.js
  5. npm: el gestor de paquetes
  6. Separa la lógica del interfaz
  7. Scripts ejecutables (Linux y macOS)

Node.js es un programa que ejecuta JavaScript fuera del navegador: en tu terminal o en un servidor. Usa el mismo motor que Google Chrome (V8), así que el lenguaje es exactamente el mismo.

Con Node.js puedes:

  • Practicar JavaScript sin necesitar una página web.
  • Crear servidores web y APIs (lo verás con Express).
  • Escribir scripts que automatizan tareas: renombrar archivos, procesar datos…
  • Usar herramientas de desarrollo como Astro, Vite o el propio npm.

Instalar Node.js

Descárgalo de nodejs.org y elige la versión LTS (Long Term Support, la estable). Para comprobar que se ha instalado, abre una terminal y escribe:

node -v
npm -v

Si ves dos números de versión, está listo.

En algunas distribuciones de Linux antiguas el comando se llama nodejs en lugar de node, porque ya había otro programa con ese nombre. En las versiones actuales y en Windows y macOS es node.

Ejecutar un archivo

Crea un archivo hola.js:

const nombre = "Ana";
console.log(`Hola, ${nombre}`);
console.log("2 + 3 =", 2 + 3);

Y ejecútalo desde la terminal, en la carpeta del archivo:

node hola.js

Salida:

Hola, Ana
2 + 3 = 5

En Node.js, console.log escribe directamente en la terminal.

La consola interactiva (REPL)

Si escribes solo node, entras en un modo interactivo donde cada línea se ejecuta al pulsar Enter:

$ node
> 2 + 2
4
> "hola".toUpperCase()
'HOLA'
> typeof null
'object'
> .exit

Es perfecta para probar dudas rápidas (“¿qué devuelve esto?”). Sales con .exit o pulsando Ctrl + C dos veces. La consola del navegador (F12) funciona igual.

Qué hay y qué no hay en Node.js

El lenguaje es el mismo, pero el entorno cambia:

NavegadorNode.js
console.logSíSí
document, window, el DOMSíNo (no hay página)
alert, promptSíNo
Leer y escribir archivosNoSí (módulo fs)
Variables de entornoNoSí (process.env)
Crear un servidor webNoSí (módulo http o Express)

Si ejecutas en Node.js un código que usa document, verás el error ReferenceError: document is not defined.

npm: el gestor de paquetes

Con Node.js se instala npm (Node Package Manager). Sirve para descargar librerías que ha escrito otra gente, llamadas paquetes. Hay millones en npmjs.com.

npm init -y              # crea un package.json en la carpeta actual
npm install express      # descarga Express y lo apunta en package.json
npm run dev              # ejecuta el script "dev" definido en package.json
  • package.json: la ficha del proyecto. Lista sus dependencias y sus scripts.
  • node_modules/: la carpeta donde se descargan los paquetes. Puede ocupar mucho, nunca se sube a Git (va en .gitignore). Cualquiera puede regenerarla con npm install.
  • npx: ejecuta un paquete sin instalarlo de forma permanente, como npx create-astro.

Separa la lógica del interfaz

Un consejo que te servirá toda la vida: no mezcles los cálculos de tu aplicación con los botones y la página.

Imagina una calculadora de IMC. Hay dos partes:

  1. La lógica: la fórmula que calcula el índice y dice si es bajo, normal o alto.
  2. El interfaz: leer el peso y la altura del formulario y mostrar el resultado en la página.

Si escribes la fórmula dentro de la función del botón, cuando quieras reutilizarla (en otra página, en una app, en un servidor) tendrás que copiarla. Y probarla será difícil, porque para cada prueba tienes que rellenar el formulario.

Mejor así:

// logica.js: sin nada del navegador. Se puede probar con Node.js.
function calcularImc(pesoKg, alturaM) {
  return pesoKg / (alturaM * alturaM);
}

console.log(calcularImc(70, 1.75).toFixed(1)); // 22.9
// interfaz.js: solo lee datos de la página y muestra el resultado.
boton.addEventListener("click", () => {
  const peso = Number(campoPeso.value);
  const altura = Number(campoAltura.value);
  resultado.textContent = calcularImc(peso, altura).toFixed(1);
});

Desarrolla y prueba la lógica con Node.js en la terminal; cuando funcione, conéctala con la página. Los manejadores de los botones deberían limitarse a leer datos, llamar a una función y mostrar el resultado.

Scripts ejecutables (Linux y macOS)

Si quieres ejecutar un script como un programa más (./script.js), añade esta primera línea y dale permiso de ejecución con chmod +x script.js:

#!/usr/bin/env node
console.log("Soy un programa");

Esa primera línea solo tiene sentido en scripts para la terminal: en el navegador daría error.

Pon a prueba lo que has aprendido

[JavaScript] Ejecutas con Node.js un archivo que usa document.querySelector. ¿Qué pasa?

[JavaScript] ¿Qué carpeta no se debe subir nunca a Git?

¿Te ha quedado claro? Márcala y verás tu progreso en el explorador.