5-Controladores y Rutas
Creando Controladores y Rutas para Autenticación en Node.js
Estructura del Proyecto
Antes de comenzar, revisemos la organización del proyecto:
BIENESRAICES_MVC/
├── controllers/
├── node_modules/
├── public/
│ ├── css/
│ │ ├── app.css
│ │ └── tailwind.css
│ ├── img/
│ └── js/
├── routes/
├── views/
│ ├── auth/
│ │ ├── login.pug
│ │ └── registro.pug
│ └── layout/
│ └── index.pug
├── package.json
└── tailwind.config.cjsEn este post, exploraremos cómo estructurar controladores y rutas para un sistema de autenticación básico en Node.js usando Express.
Estructura del Proyecto
/src
/controllers
usuarioController.js
/routes
usuarioRoutes.js
/views
/auth
login.pug
registro.pugControlador de Usuarios (usuarioController.js)
El controlador maneja la lógica para renderizar las vistas de login y registro:
const formularioLogin = (req, res) => {
res.render('auth/login', {})
}
const formularioRegistro = (req, res) => {
res.render('auth/registro', {})
}
export {
formularioLogin,
formularioRegistro
}Explicación:
formularioLogin: Renderiza la vista de login ubicada enviews/auth/login.pugformularioRegistro: Renderiza la vista de registro ubicada enviews/auth/registro.pugExportamos ambas funciones para usarlas en nuestras rutas
Rutas de Usuario (usuarioRoutes.js)
Las rutas definen los endpoints de nuestra aplicación:
import express from "express";
import { formularioLogin, formularioRegistro } from '../controllers/usuarioController.js';
const router = express.Router();
router.get('/login', formularioLogin);
router.get('/registro', formularioRegistro);
export default router;Explicación:
Importamos las funciones del controlador
Creamos un router con
express.Router()Definimos dos rutas GET:
/loginque usaformularioLogin/registroque usaformularioRegistro
Exportamos el router para usarlo en nuestra aplicación principal
Vistas (Pug)
Tenemos dos vistas básicas:
auth/login.pug
//- Contenido de tu vista de login aquíauth/registro.pug
//- Contenido de tu vista de registro aquíIntegración Completa
Para usar estas rutas en tu aplicación principal, deberías:
Importar el router en tu archivo principal (app.js o server.js)
Usarlo con
app.use(), probablemente con un prefijo como:
import usuarioRoutes from './routes/usuarioRoutes.js';
// ... otras configuraciones
app.use('/', usuarioRoutes);Conclusión
Esta estructura proporciona una base sólida para:
Separación de preocupaciones (controladores vs rutas vs vistas)
Fácil escalabilidad
Mantenimiento sencillo
En posts futuros, expandiremos esta funcionalidad para incluir:
Procesamiento de formularios
Autenticación real con base de datos
Validación de datos
Manejo de sesiones
¿Qué otras funcionalidades te gustaría ver implementadas en este sistema de autenticación?
Este post explica claramente el código proporcionado y ofrece un contexto útil para los lectores de tu blog. Puedes personalizarlo añadiendo más detalles sobre tu implementación específica o incluyendo capturas de pantalla de las vistas.
Comentarios
Publicar un comentario