Express.js | Guía Completa para Entender

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.


¿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

  1. Ligero y rápido: No impone una estructura rígida, permitiendo flexibilidad en la organización del proyecto.
  2. Soporte para middlewares: Puedes agregar funcionalidades fácilmente al flujo de solicitudes y respuestas.
  3. Manejo de rutas sencillo: Permite definir rutas claras y organizadas.
  4. Compatible con motores de plantillas: Como EJS, Pug o Handlebars, para generar vistas dinámicas.
  5. 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?

  1. Importa Express.js: Requiere el módulo de Express.
  2. Crea una aplicación Express: La constante app es una instancia de Express.
  3. Define una ruta: Cuando el navegador visita /, responde con «¡Hola, mundo desde Express.js!».
  4. 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

  1. Ligero y fácil de usar.
  2. Comunidad activa y numerosos paquetes complementarios.
  3. Flexibilidad para proyectos de cualquier tamaño.

Desventajas

  1. Necesita configuración para tareas más complejas.
  2. 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!

Rate this post

Deja un comentario

Web Devs