Menu

Qué es Node.js y para qué sirve: el runtime de JavaScript

Node.js es un runtime que ejecuta JavaScript fuera del navegador, en servidores y en la terminal. No es un lenguaje ni un framework: es V8, más un event loop, más APIs para archivos, red y procesos.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

Node.js es un runtime que ejecuta JavaScript fuera del navegador: en un servidor, en una terminal o como herramienta de línea de comandos. No es un lenguaje de programación (el lenguaje es JavaScript) ni un framework (Express es un framework que funciona sobre Node.js). Combina el motor V8 de Google, que ejecuta JavaScript, con un event loop y APIs integradas para archivos, red y procesos que los navegadores no tienen.

Imprimió el contenido del archivo, la versión mayor (v24) y undefined para window, porque Node.js no tiene una página web que darte. fs y process solo existen en Node.js; ejecuta las mismas líneas en una pestaña del navegador y la primera lanza un error.

¿Node.js es un framework o un lenguaje?

Ninguna de las dos cosas. JavaScript es el lenguaje. Node.js es el programa que lo ejecuta, igual que la JVM ejecuta Java o CPython ejecuta Python. Los frameworks van por encima: Express, Fastify y NestJS son librerías que instalas en un proyecto de Node.js. La página Node.js vs JavaScript compara los dos en detalle.

Por dentro, Node.js tiene cuatro partes:

  • V8, el motor de JavaScript de Chrome. Convierte tu código en código máquina y lo ejecuta.
  • libuv, una librería en C que aporta el event loop y hace el trabajo lento (disco, red, timers) en segundo plano, y luego devuelve el resultado a tus callbacks.
  • Las APIs propias de Node: fs para archivos, http para servidores, path, process, crypto, events y más, disponibles con require o import sin instalar nada.
  • npm, el gestor de paquetes que viene con Node.js y te da acceso al mayor registro de paquetes de cualquier lenguaje.

Cómo ejecutar un archivo de Node.js

Instala Node.js desde su web (elige la versión LTS), compruébalo desde una terminal y ejecuta un archivo:

node --version     # prints v24.x.x or similar
node app.js        # runs app.js and exits when it has nothing left to do
node               # with no file: an interactive prompt (the REPL)

Un programa termina solo cuando ya no hay nada pendiente: ningún timer, ningún servidor abierto, ninguna lectura de archivo en curso. Por eso un script termina, pero un servidor web sigue ejecutándose.

I/O no bloqueante, la idea central

Node.js no espera al trabajo lento. Empieza a leer un archivo o lanza una petición de red, sigue ejecutando las siguientes líneas y llama a tu función cuando el resultado está listo.

Las dos líneas de console.log que van después de readFile se ejecutaron primero, y el contenido del archivo llegó al final. Así es como un solo proceso de Node.js atiende miles de conexiones: mientras una petición espera a la base de datos, el event loop mantiene en marcha las demás.

Node.js vs el navegador

NavegadorNode.js
Se ejecutaEn una página webEn una terminal o en un servidor
Tienewindow, document, el DOM, localStoragefs, process, http, Buffer, require
Objeto globalwindow (y globalThis)global (y globalThis)
Archivos en discoSin accesoAcceso completo, con los permisos de tu usuario
setTimeout, console, fetch, URLSíSí

Para qué sirve Node.js

  • Servidores web y APIs: backends REST y GraphQL, a menudo con Express.
  • Apps en tiempo real: chats, dashboards en vivo y juegos multijugador con WebSockets, donde muchas conexiones siguen abiertas a la vez.
  • Herramientas de línea de comandos: el propio npm, Vite, ESLint, Prettier y el compilador de TypeScript funcionan sobre Node.js.
  • Scripts y automatización: renombrar archivos, llamar a APIs, migrar datos.

El uso más común es un servidor HTTP, y el módulo integrado http basta para el primero:

El servidor respondió a GET /hello con la ruta que recibió. Cambia la ruta en la barra de petición a /anything y envíala: la respuesta cambia con ella, porque este servidor atiende todas las URLs con una sola función.

Cuándo elegir Node.js

Elige Node.js cuando el trabajo consiste sobre todo en esperar I/O (peticiones, bases de datos, archivos) y quieres un solo lenguaje en el frontend y el backend. Encaja peor en cálculos largos que consumen mucha CPU, como codificar vídeo o procesar grandes volúmenes numéricos, porque un cálculo largo bloquea el único hilo de JavaScript y todas las demás peticiones esperan.

Preguntas frecuentes

¿Node.js es frontend o backend?

Backend, sobre todo. Node.js se ejecuta en un servidor o en tu propia máquina, no en el navegador del visitante. Aun así, los desarrolladores frontend lo usan a diario, porque herramientas como npm, Vite y ESLint son programas de Node.js.

¿Quién creó Node.js y cuándo?

Ryan Dahl publicó Node.js en 2009. Hoy lo mantiene la OpenJS Foundation, con una versión mayor nueva cada seis meses, y las versiones pares reciben soporte a largo plazo (LTS).

¿Necesito saber JavaScript antes de aprender Node.js?

Sí, al menos lo básico: variables, funciones, objetos, arrays y callbacks o promesas. Node.js añade APIs, no sintaxis nueva, así que todo lo que aprendas del lenguaje te sirve directamente.

¿Node.js es single-threaded?

Tu JavaScript se ejecuta en un solo hilo. Node.js usa por detrás un pequeño pool de hilos para el sistema de archivos, DNS y parte de crypto, así que el I/O lento no bloquea tu código mientras espera.

Ilustración de los lenguajes de programación de Coddy

Aprende a programar con Coddy

Comenzar