Express.js es uno de los frameworks más populares para Node.js, utilizado para construir aplicaciones web y APIs de manera rápida y sencilla. Es conocido por su flexibilidad, simplicidad y capacidad para manejar tareas comunes en el desarrollo web. En este artículo, aprenderás qué es Express.js, sus características principales, cómo configurarlo y cómo usarlo para crear aplicaciones funcionales.
Ver índice del contenido
¿Qué es Express.js?
Express.js es un framework minimalista y flexible para Node.js que simplifica el desarrollo de aplicaciones web y APIs. Ofrece una estructura ligera, pero con muchas funcionalidades listas para usar, lo que lo convierte en una excelente herramienta para proyectos pequeños y grandes.
¿Por qué usar Express.js?
Aunque puedes usar Node.js directamente para crear servidores web, Express.js facilita muchas tareas comunes, como:
- Manejo de rutas.
- Gestión de solicitudes y respuestas HTTP.
- Uso de middlewares para procesar datos.
- Integración con bases de datos.
Características principales de Express.js
- Ligero y rápido: No impone una estructura rígida, permitiendo flexibilidad en la organización del proyecto.
- Soporte para middlewares: Puedes agregar funcionalidades fácilmente al flujo de solicitudes y respuestas.
- Manejo de rutas sencillo: Permite definir rutas claras y organizadas.
- Compatible con motores de plantillas: Como EJS, Pug o Handlebars, para generar vistas dinámicas.
- Facilidad para crear APIs RESTful: Ideal para aplicaciones modernas.
Cómo instalar y configurar Express.js
Paso 1: Instalar Node.js
Antes de usar Express.js, necesitas tener Node.js instalado. Si no lo has hecho, visita https://nodejs.org y sigue las instrucciones.
Paso 2: Crear un proyecto Node.js
Crea un nuevo proyecto y un archivo package.json
:
mkdir mi-proyecto cd mi-proyecto npm init -y
Paso 3: Instalar Express.js
Ejecuta el siguiente comando para instalar Express.js:
npm install express
Tu primer servidor con Express.js
Con Express.js, puedes crear un servidor básico en muy pocos pasos:
const express = require('express'); const app = express(); // Crear una instancia de Express // Definir una ruta app.get('/', (req, res) => { res.send('¡Hola, mundo desde Express.js!'); }); // Iniciar el servidor app.listen(3000, () => { console.log('Servidor corriendo en http://localhost:3000'); });
¿Qué hace este código?
- Importa Express.js: Requiere el módulo de Express.
- Crea una aplicación Express: La constante
app
es una instancia de Express. - Define una ruta: Cuando el navegador visita
/
, responde con «¡Hola, mundo desde Express.js!». - Inicia el servidor: Usa el puerto 3000 y muestra un mensaje en la consola cuando está listo.
Conceptos fundamentales en Express.js
1. Rutas
Las rutas en Express.js definen cómo la aplicación responde a diferentes solicitudes HTTP (GET, POST, PUT, DELETE, etc.).
Ejemplo:
app.get('/saludo', (req, res) => { res.send('¡Hola desde la ruta /saludo!'); }); app.post('/datos', (req, res) => { res.send('Datos enviados correctamente.'); });
2. Middlewares
Los middlewares son funciones que procesan las solicitudes antes de que lleguen a las rutas o después de que se haya enviado una respuesta.
Ejemplo de middleware simple:
app.use((req, res, next) => { console.log(`Solicitud recibida: ${req.method} ${req.url}`); next(); // Pasa al siguiente middleware o ruta });
3. Manejo de parámetros
Puedes capturar parámetros de las rutas para personalizar las respuestas.
Ejemplo:
app.get('/usuario/:id', (req, res) => { const userId = req.params.id; res.send(`Usuario solicitado: ${userId}`); });
Procesamiento de datos en Express.js
1. Cuerpo de las solicitudes (Body Parsing)
Para procesar datos enviados en el cuerpo de las solicitudes (como formularios), necesitas un middleware como express.json()
.
Ejemplo:
app.use(express.json()); app.post('/api', (req, res) => { const datos = req.body; res.send(`Datos recibidos: ${JSON.stringify(datos)}`); });
2. Archivos estáticos
Puedes servir archivos como imágenes, CSS o JavaScript desde un directorio público.
Ejemplo:
app.use(express.static('public'));
Crea una carpeta llamada public
y coloca tus archivos allí. Ahora puedes acceder a ellos desde tu navegador.
Organización de proyectos en Express.js
A medida que tu proyecto crece, es importante organizarlo. Aquí tienes una estructura básica:
mi-proyecto/ │ ├── node_modules/ # Paquetes instalados ├── public/ # Archivos estáticos ├── routes/ # Archivos de rutas │ └── index.js ├── app.js # Archivo principal └── package.json # Información del proyecto
Archivo de ejemplo: app.js
const express = require('express'); const app = express(); const rutas = require('./routes/index'); app.use(express.json()); app.use('/api', rutas); app.listen(3000, () => { console.log('Servidor en ejecución en http://localhost:3000'); });
Archivo de ejemplo: routes/index.js
const express = require('express'); const router = express.Router(); router.get('/', (req, res) => { res.send('¡Bienvenido a la API!'); }); module.exports = router;
Express.js y motores de plantillas
Express.js puede renderizar vistas dinámicas usando motores de plantillas como Pug, EJS o Handlebars.
Instalar y usar EJS
npm install ejs
Configuración:
app.set('view engine', 'ejs');
Ejemplo:
Crea un archivo views/index.ejs
:
<!DOCTYPE html> <html lang="es"> <head> <title><%= titulo %></title> </head> <body> <h1><%= mensaje %></h1> </body> </html>
Desde el servidor:
app.get('/', (req, res) => { res.render('index', { titulo: 'Inicio', mensaje: '¡Hola desde EJS!' }); });
Creación de una API RESTful con Express.js
Express.js es ideal para construir APIs RESTful. Aquí tienes un ejemplo de CRUD básico:
Rutas CRUD:
const usuarios = []; app.get('/usuarios', (req, res) => { res.json(usuarios); }); app.post('/usuarios', (req, res) => { const nuevoUsuario = req.body; usuarios.push(nuevoUsuario); res.status(201).send('Usuario creado'); }); app.put('/usuarios/:id', (req, res) => { const id = req.params.id; usuarios[id] = req.body; res.send('Usuario actualizado'); }); app.delete('/usuarios/:id', (req, res) => { const id = req.params.id; usuarios.splice(id, 1); res.send('Usuario eliminado'); });
Ventajas y desventajas de Express.js
Ventajas
- Ligero y fácil de usar.
- Comunidad activa y numerosos paquetes complementarios.
- Flexibilidad para proyectos de cualquier tamaño.
Desventajas
- Necesita configuración para tareas más complejas.
- No es ideal para aplicaciones de procesamiento intensivo.
Conclusión
Express.js es una herramienta esencial para cualquier desarrollador que quiera trabajar con Node.js. Su flexibilidad, facilidad de uso y capacidad para manejar aplicaciones modernas lo convierten en una opción poderosa para construir desde APIs simples hasta aplicaciones web completas. ¡Empieza hoy y explora todo lo que puedes lograr con Express.js!