Express: Introducción y entorno

Aprende la introducción y configuración del entorno en Express 5 para crear aplicaciones web y APIs eficientes con Node.js y JavaScript moderno.

Aprende Express GRATIS y certifícate

Introducción y entorno

Express es el framework web más utilizado para Node.js, diseñado para construir aplicaciones web y APIs de forma eficiente y escalable. Su filosofía minimalista y su arquitectura basada en middleware lo convierten en la herramienta fundamental para el desarrollo backend en el ecosistema JavaScript.

A diferencia de otros frameworks más pesados, Express adopta un enfoque no opinativo, proporcionando únicamente las funcionalidades esenciales para el desarrollo web. Esta característica permite a los desarrolladores mantener control total sobre la arquitectura de sus aplicaciones, eligiendo las herramientas y patrones que mejor se adapten a sus necesidades específicas.

Arquitectura y filosofía

Express se construye sobre el concepto de middleware, funciones que se ejecutan secuencialmente durante el ciclo de vida de una petición HTTP. Esta arquitectura modular permite componer aplicaciones complejas mediante la combinación de pequeñas piezas de funcionalidad reutilizable.

El sistema de enrutamiento de Express proporciona una API intuitiva para definir cómo la aplicación responde a diferentes endpoints. Cada ruta puede asociarse con uno o múltiples middleware, creando un pipeline de procesamiento flexible y mantenible.

const express = require('express');
const app = express();

// Middleware global
app.use(express.json());

// Ruta con middleware específico
app.get('/usuarios', autenticar, validarPermisos, obtenerUsuarios);

function autenticar(req, res, next) {
  // Lógica de autenticación
  next();
}

function validarPermisos(req, res, next) {
  // Validación de permisos
  next();
}

function obtenerUsuarios(req, res) {
  res.json({ usuarios: [] });
}

Configuración del entorno de desarrollo

Para trabajar con Express 5, necesitamos establecer un entorno de desarrollo moderno que aproveche las últimas características de Node.js. La versión 5 introduce mejoras significativas en rendimiento, manejo de errores asíncronos y compatibilidad con las características más recientes de JavaScript.

Requisitos del sistema:

  • Node.js versión 22 o superior para acceder a las últimas optimizaciones del motor V8
  • npm o yarn como gestor de paquetes
  • Editor de código con soporte para JavaScript moderno

Inicialización del proyecto:

mkdir mi-app-express
cd mi-app-express
npm init -y

Instalación de Express 5:

npm install express@5
npm install --save-dev nodemon

La instalación de nodemon como dependencia de desarrollo nos permite reiniciar automáticamente la aplicación cuando detecta cambios en el código, mejorando significativamente la experiencia de desarrollo.

Estructura básica de una aplicación

Una aplicación Express típica sigue una estructura modular que separa responsabilidades y facilita el mantenimiento. La configuración inicial establece los fundamentos sobre los cuales construiremos funcionalidades más complejas.

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

// Configuración de middleware básico
app.use(express.json({ limit: '10mb' }));
app.use(express.urlencoded({ extended: true }));

// Ruta de prueba
app.get('/', (req, res) => {
  res.json({ 
    mensaje: 'Servidor Express 5 funcionando',
    version: '5.0.0'
  });
});

// Manejo de errores
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({ error: 'Error interno del servidor' });
});

app.listen(PORT, () => {
  console.log(`Servidor ejecutándose en puerto ${PORT}`);
});

Mejoras en Express 5

Express 5 introduce cambios significativos que mejoran la robustez y el rendimiento de las aplicaciones. El manejo mejorado de promesas rechazadas elimina la necesidad de envolver manualmente las funciones asíncronas en bloques try-catch dentro de los middleware.

Manejo automático de errores asíncronos:

// Express 5 maneja automáticamente las promesas rechazadas
app.get('/datos-async', async (req, res) => {
  const datos = await obtenerDatosDeBaseDeDatos();
  res.json(datos);
  // No necesitamos try-catch manual
});

async function obtenerDatosDeBaseDeDatos() {
  // Simulación de operación asíncrona
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve({ id: 1, nombre: 'Usuario' });
    }, 100);
  });
}

Configuración de scripts de desarrollo:

{
  "scripts": {
    "start": "node app.js",
    "dev": "nodemon app.js",
    "test": "node --test"
  }
}

Variables de entorno y configuración

La gestión de configuración mediante variables de entorno es fundamental para crear aplicaciones que funcionen correctamente en diferentes entornos. Express 5 mantiene compatibilidad total con las prácticas estándar de configuración de Node.js.

// Configuración mediante variables de entorno
const config = {
  port: process.env.PORT || 3000,
  nodeEnv: process.env.NODE_ENV || 'development',
  dbUrl: process.env.DATABASE_URL || 'mongodb://localhost:27017/miapp'
};

// Configuración condicional según el entorno
if (config.nodeEnv === 'development') {
  app.use(require('morgan')('dev'));
}

La separación de configuración del código permite desplegar la misma aplicación en múltiples entornos sin modificaciones, siguiendo los principios de las aplicaciones de doce factores.

Empezar curso de Express

Lecciones de este módulo de Express

Lecciones de programación del módulo Introducción y entorno del curso de Express.