Node.js para Principiantes: Tu Primer Servidor desde Cero

¿Ya sabes JavaScript y quieres crear tu primer servidor? Aprende Node.js paso a paso y construye una API REST que funcione con tu página web frontend

¿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.

70% de las empresas tech usan Node.js
€45,000 salario promedio Node.js developer junior

¿Por qué Node.js?

🔧 Paso 1: Instalar Node.js

Antes de programar necesitas instalar Node.js en tu ordenador:

✅ Instalación paso a paso:

Ve a nodejs.org en tu navegador
Descarga la versión LTS (la recomendada)
Ejecuta el instalador y sigue los pasos
Abre la terminal/consola de comandos
Escribe: node --version
Si ves un número de versión, ¡ya está instalado!

⚠️ 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:

Abre la terminal en la carpeta de tu proyecto
Escribe: node server.js
Verás: "Servidor funcionando en http://localhost:3000"
Ve a tu navegador
Escribe en la URL: localhost:3000
¡Deberías ver tu mensaje!

💡 ¿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:

Para el servidor (Ctrl + C en la terminal)
Escribe: npm init -y
Esto crea un archivo package.json
Escribe: npm install express@5.1.0
¡Express está instalado!

Ahora 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:

🔄 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:

Instalar y configurar Node.js
Crear servidores HTTP básicos
Usar Express.js para simplificar el desarrollo
Crear rutas y endpoints
Manejar peticiones GET, POST, DELETE
Conectar frontend con backend
Servir archivos estáticos

💡 Próximos pasos recomendados:

👉 Python Backend para Principiantes: Compara con Flask

Compara 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:

Backend Developer €35,000 - €55,000
Full-Stack Developer €40,000 - €65,000
API Developer €38,000 - €58,000
DevOps Engineer €45,000 - €70,000