¿Has aprendido JavaScript frontend y ahora quieres crear el servidor que alimente tu página web? Node.js te permite usar JavaScript también en el backend, así no necesitas aprender otro lenguaje.
En este tutorial vas a crear tu primer servidor web desde cero, paso a paso, sin asumir que sabes nada de backend.
🤔 ¿Qué vamos a aprender?
- Qué es Node.js y por qué usarlo
- Instalar Node.js en tu ordenador
- Crear tu primer servidor básico
- Usar Express.js para facilitar el desarrollo
- Crear rutas y endpoints
- Construir una API REST simple
- Conectar tu servidor con una página web
📦 ¿Qué es Node.js?
Node.js es JavaScript que funciona fuera del navegador. Normalmente JavaScript solo funciona en páginas web, pero Node.js te permite ejecutar código JavaScript en tu ordenador como cualquier otro programa.
¿Por qué Node.js?
- Mismo lenguaje: Si sabes JavaScript frontend, ya sabes Node.js
- Rápido: Perfecto para APIs y aplicaciones en tiempo real
- Demandado: Netflix, Uber, Airbnb lo usan en producción
- Ecosistema: Miles de librerías gratuitas disponibles
🔧 Paso 1: Instalar Node.js
Antes de programar necesitas instalar Node.js en tu ordenador:
✅ Instalación paso a paso:
node --version⚠️ Si no sabes abrir la terminal:
- Windows: Pulsa Win + R, escribe "cmd" y Enter
- Mac: Cmd + Espacio, escribe "terminal" y Enter
- Linux: Ctrl + Alt + T
🚀 Paso 2: Tu Primer Servidor
Vamos a crear el servidor más básico posible. Crea una carpeta nueva llamada "mi-primer-servidor" en tu escritorio.
Dentro de esa carpeta, crea un archivo llamado server.js con este código:
// server.js
const http = require('http');
// Crear el servidor
const server = http.createServer((req, res) => {
// Enviar respuesta
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end('¡Hola! Este es mi primer servidor Node.js 🎉');
});
// Escuchar en el puerto 3000
server.listen(3000, () => {
console.log('Servidor funcionando en http://localhost:3000');
});
Para ejecutar tu servidor:
🎯 Ejecutar servidor:
node server.js💡 ¿Qué acaba de pasar?
- require('http'): Cargas el módulo HTTP de Node.js
- createServer(): Creas un servidor web
- req, res: Request (petición) y Response (respuesta)
- listen(3000): El servidor "escucha" en el puerto 3000
- localhost:3000: Es la dirección de tu servidor local
📝 Paso 3: Mejorando con Express.js
El código anterior funciona, pero escribir servidores así es muy tedioso. Express.js es una librería que hace todo mucho más fácil.
Instalar Express:
📦 Instalación Express:
npm init -ynpm install express@5.1.0Ahora crea un archivo nuevo llamado app.js:
// app.js
const express = require('express');
const app = express();
// Ruta principal
app.get('/', (req, res) => {
res.send('¡Hola desde Express! 🚀');
});
// Iniciar servidor
app.listen(3000, () => {
console.log('Servidor Express en http://localhost:3000');
});
Ejecuta: node app.js y ve a localhost:3000. ¡Mucho más simple!
🛣️ Paso 4: Crear Rutas
Las rutas son diferentes URLs que tu servidor puede manejar. Vamos a crear varias:
// app.js - versión con más rutas
const express = require('express');
const app = express();
// Página principal
app.get('/', (req, res) => {
res.send('¡Bienvenido a mi API!');
});
// Ruta "about"
app.get('/about', (req, res) => {
res.send('Sobre nosotros - Mi primera API con Node.js');
});
// Ruta que devuelve JSON
app.get('/api/users', (req, res) => {
const users = [
{ id: 1, name: 'Ana', email: 'ana@email.com' },
{ id: 2, name: 'Carlos', email: 'carlos@email.com' }
];
res.json(users);
});
app.listen(3000, () => {
console.log('Servidor en http://localhost:3000');
});
Prueba estas URLs:
- localhost:3000/ → Mensaje de bienvenida
- localhost:3000/about → Información sobre nosotros
- localhost:3000/api/users → Lista de usuarios en JSON
🔄 Paso 5: Una API REST Completa
Una API REST es un conjunto de rutas que permiten crear, leer, actualizar y borrar datos. Vamos a crear una API para gestionar una lista de tareas:
// api-completa.js
const express = require('express');
const app = express();
// Middleware para parsear JSON
app.use(express.json());
// Array para simular base de datos
let tasks = [
{ id: 1, title: 'Aprender Node.js', completed: false },
{ id: 2, title: 'Crear mi primera API', completed: true }
];
// GET - Obtener todas las tareas
app.get('/api/tasks', (req, res) => {
res.json(tasks);
});
// POST - Crear nueva tarea
app.post('/api/tasks', (req, res) => {
const newTask = {
id: tasks.length + 1,
title: req.body.title,
completed: false
};
tasks.push(newTask);
res.json(newTask);
});
// DELETE - Borrar tarea
app.delete('/api/tasks/:id', (req, res) => {
const taskId = parseInt(req.params.id);
tasks = tasks.filter(task => task.id !== taskId);
res.json({ message: 'Tarea eliminada' });
});
app.listen(3000, () => {
console.log('API funcionando en http://localhost:3000');
});
🎯 Tu API puede hacer:
- GET /api/tasks → Ver todas las tareas
- POST /api/tasks → Crear nueva tarea
- DELETE /api/tasks/1 → Borrar tarea con ID 1
🌐 Paso 6: Conectar con Frontend
Ahora vamos a crear una página web que use tu API. Crea un archivo public/index.html:
<!-- public/index.html -->
<!DOCTYPE html>
<html>
<head>
<title>Mi App de Tareas</title>
</head>
<body>
<h1>Lista de Tareas</h1>
<div id="tasks"></div>
<button onclick="loadTasks()">Cargar Tareas</button>
<script>
async function loadTasks() {
const response = await fetch('/api/tasks');
const tasks = await response.json();
const tasksDiv = document.getElementById('tasks');
tasksDiv.innerHTML = tasks.map(task =>
`<p>${task.title} - ${task.completed ? '✅' : '❌'}</p>`
).join('');
}
</script>
</body>
</html>
Actualiza tu servidor para servir archivos estáticos:
// Agregar esta línea a api-completa.js
app.use(express.static('public'));
Ahora ve a localhost:3000 y haz clic en "Cargar Tareas". ¡Tu frontend está conectado con tu API!
❌ Error común:
Si ves un error de CORS al conectar frontend y backend, agrega esto a tu servidor:
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
next();
});
🚀 ¿Qué Sigue Después?
¡Felicidades! Has creado tu primer servidor Node.js con una API REST completa. Esto es lo que has aprendido:
✅ Lo que ya dominas:
💡 Próximos pasos recomendados:
👉 Python Backend para Principiantes: Compara con FlaskCompara Node.js con Python y descubre cuál prefieres para backend
💪 Proyectos para practicar:
- Blog personal: CRUD completo para artículos
- API de productos: Para una tienda online
- Sistema de usuarios: Registro y login
- Chat en tiempo real: Con WebSockets
🎯 Salidas Profesionales
Con Node.js puedes trabajar como: