5-Express

 

Express: Dominando Servidores Web con Node.js y Express

  5- EXPRESS
           |
          V

mi-app/
├app.js
└── package.json

1. Introducción a Express

Express es el framework web más popular para Node.js. Simplifica la creación de servidores HTTP con:
✔️ Enrutamiento intuitivo
✔️ Sistema de middleware potente
✔️ Manejo simplificado de requests/responses
✔️ Compatibilidad con múltiples motores de plantillas

bash
Copy
Download
# Iniciar proyecto
npm init -y
npm install express

2. Servidor Básico en 4 Pasos

Archivo: app.js

javascript
Copy
Download
// 1. Importar Express
const express = require('express');

// 2. Crear aplicación
const app = express();
const PORT = 3000;

// 3. Definir ruta principal
app.get('/', (req, res) => {
  res.send('🎉 ¡Servidor Express funcionando!');
});

// 4. Iniciar servidor
app.listen(PORT, () => {
  console.log(`Servidor corriendo en http://localhost:${PORT}`);
});

Ejecutar:

bash
Copy
Download
node app.js

3. Manejo de Rutas Esencial

Rutas básicas

javascript
Copy
Download
// GET
app.get('/productos', (req, res) => {
  res.send('Lista de productos');
});

// POST
app.post('/productos', (req, res) => {
  res.send('Producto creado');
});

Rutas con parámetros

javascript
Copy
Download
app.get('/usuarios/:id', (req, res) => {
  res.send(`Usuario ID: ${req.params.id}`);
});

// Ejemplo: /usuarios/123 → "Usuario ID: 123"

Múltiples métodos

javascript
Copy
Download
app.route('/libros')
  .get((req, res) => res.send('Obtener libros'))
  .post((req, res) => res.send('Crear libro'));

4. Middleware Clave

Funciones que procesan requests antes de llegar a las rutas:

Middleware incorporado

javascript
Copy
Download
// Parsear JSON
app.use(express.json());

// Parsear formularios
app.use(express.urlencoded({ extended: true }));

// Servir archivos estáticos
app.use(express.static('public'));

Middleware personalizado

javascript
Copy
Download
// Logger de solicitudes
app.use((req, res, next) => {
  console.log(`${req.method} ${req.url}`);
  next(); // Continuar al siguiente middleware
});

5. Manejo de Errores

javascript
Copy
Download
// Ruta no encontrada (404)
app.use((req, res) => {
  res.status(404).send('Página no encontrada');
});

// Manejador global de errores
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('¡Error en el servidor!');
});

6. Estructura Profesional

Copy
Download
mi-app/
├── controllers/
│   └── userController.js
├── routes/
│   └── userRoutes.js
├── public/
├── app.js
└── package.json

Ejemplo modular:

javascript
Copy
Download
// routes/userRoutes.js
const router = express.Router();

router.get('/', (req, res) => {
  res.send('Lista de usuarios');
});

module.exports = router;

// app.js
const userRoutes = require('./routes/userRoutes');
app.use('/usuarios', userRoutes);

7. Nodemon para Desarrollo

Instalación:

bash
Copy
Download
npm install --save-dev nodemon

Configurar en package.json:

json
Copy
Download
"scripts": {
  "start": "node app.js",
  "dev": "nodemon app.js"
}

Uso:

bash
Copy
Download
npm run dev  # Recarga automática al guardar cambios

8. Extendiendo Express

Motor de plantillas (EJS):

bash
Copy
Download
npm install ejs
javascript
Copy
Download
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
  res.render('index', { title: 'Inicio' });
});

API REST básica:

javascript
Copy
Download
app.get('/api/usuarios', (req, res) => {
  res.json([{ id: 1, nombre: 'Juan' }]);
});

 ¿Qué hace app.set('view engine', 'ejs') en Express.js?

Si estás trabajando con Node.js y Express, es probable que hayas visto la línea app.set('view engine', 'ejs') en tu código. Pero, ¿qué significa exactamente y por qué es importante?

En este artículo, te explico cómo funciona esta configuración y cómo te ayuda a renderizar páginas dinámicas en tu aplicación web.


2. ¿Para qué sirve app.set('view engine', 'ejs')?

La línea:

javascript
Copy
Download
app.set('view engine', 'ejs');

le dice a Express que usará EJS como motor de plantillas predeterminado. Esto significa que:

✅ No necesitas especificar la extensión al renderizar vistas:

javascript
Copy
Download
res.render('home'); // Buscará automáticamente "home.ejs"

✅ Permite incrustar JavaScript en HTML:
Con EJS, puedes hacer cosas como:

html
Copy
Download
Run
<h1>Hola, <%= username %>!</h1>

✅ Facilita la organización de vistas:
Express buscará las plantillas en la carpeta views/ por defecto.



🚀 Conclusión

Express te permite crear:

  • APIs RESTful

  • Aplicaciones web con SSR

  • Microservicios

  • Backends para frontends (React, Vue, etc.)

Próximos pasos:

  1. Conexión a bases de datos (MongoDB/PostgreSQL)

  2. Autenticación (JWT, Passport.js)

  3. Validación de datos (express-validator)

bash
Copy
Download
# Plantilla Express completa
npx express-generator --view=ejs

Comentarios

Entradas más populares de este blog

Lista de Tareas

9-Nuestra Primera Plantilla con EJS

6-Middleware?