Documentacion lista de tareas

 

Documentación del Código Principal (app.js)

javascript
Copy
Download
/**
 * Importación de módulos requeridos
 * @module app
 * @requires express Framework web para Node.js
 * @requires path Módulo para manejar rutas de archivos
 * @requires ./routes/tareas Router de las tareas (rutas relacionadas)
 */
const express = require('express');
const path = require('path');
const tareasRouter = require('./routes/tareas');

/**
 * Instancia de la aplicación Express
 * @type {Express}
 */
const app = express();

// =============================================
// CONFIGURACIÓN DEL MOTOR DE PLANTILLAS
// =============================================

/**
 * Configura EJS como motor de plantillas para renderizar vistas
 * @name set/view_engine
 * @function
 */
app.set('view engine', 'ejs');

/**
 * Establece la ruta del directorio de vistas
 * @name set/views
 * @function
 * @param {string} path.join(__dirname, 'views') - Ruta absoluta al directorio views
 */
app.set('views', path.join(__dirname, 'views'));

// =============================================
// MIDDLEWARES
// =============================================

/**
 * Middleware para procesar datos de formularios enviados via POST
 * @name use/urlencoded
 * @function
 * @param {Object} { extended: true } - Permite parsear objetos anidados
 */
app.use(express.urlencoded({ extended: true }));

/**
 * Middleware para servir archivos estáticos (CSS, JS, imágenes)
 * @name use/static
 * @function
 * @param {string} path.join(__dirname, 'public') - Ruta al directorio public
 */
app.use(express.static(path.join(__dirname, 'public')));

// =============================================
// RUTAS PRINCIPALES
// =============================================

/**
 * Monta el router de tareas en la ruta base '/tareas'
 * @name use/tareasRouter
 * @function
 */
app.use('/tareas', tareasRouter);

/**
 * Ruta raíz que renderiza la página de inicio
 * @name get/
 * @function
 * @param {Object} req - Objeto de petición
 * @param {Object} res - Objeto de respuesta
 */
app.get('/', (req, res) => {
  res.render('index');
});

// =============================================
// INICIO DEL SERVIDOR
// =============================================

/**
 * Puerto en el que escuchará el servidor
 * @constant
 * @type {number}
 */
const PORT = 3000;

/**
 * Inicia el servidor HTTP
 * @name listen
 * @function
 * @param {number} PORT - Puerto de escucha
 * @param {Function} callback - Función que se ejecuta al iniciar
 */
app.listen(PORT, () => {
  console.log(`Servidor corriendo en http://localhost:${PORT}`);
});

Explicación Detallada

1. Importación de Módulos

  • express: Framework web minimalista para Node.js que facilita la creación de servidores HTTP.

  • path: Módulo nativo de Node.js para trabajar con rutas de archivos y directorios.

  • tareasRouter: Router modularizado que contiene las rutas relacionadas con las tareas.

2. Configuración de Express

  • app.set('view engine', 'ejs'): Establece EJS como el motor de plantillas predeterminado.

  • app.set('views', ...): Define la ubicación del directorio que contiene las vistas (plantillas EJS).

3. Middlewares Clave

  • express.urlencoded(): Transforma los datos de formularios HTML en un objeto JavaScript accesible en req.body.

  • express.static(): Sirve archivos estáticos directamente desde el directorio especificado (mejora el rendimiento).

4. Sistema de Enrutamiento

  • app.use('/tareas', tareasRouter): Todas las rutas definidas en tareasRouter responderán bajo el prefijo '/tareas'.

  • app.get('/'): Ruta raíz que muestra la página principal (index.ejs).

5. Inicio del Servidor

  • app.listen(): Inicia el servidor HTTP en el puerto especificado (3000) y ejecuta el callback cuando esté listo.

Diagrama de Flujo

Copy
Download
Cliente (Navegador)
       ↓
  Solicitud HTTP
       ↓
     Express
       ↓
  Middlewares (urlencoded, static)
       ↓
     Router
       ↓
  (/) → index.ejs
  (/tareas) → tareasRouter
       ↓
  Respuesta HTTP
       ↓
Cliente (Navegador)

Esta documentación sigue los estándares de JSDoc y proporciona una comprensión clara de cada componente del archivo principal de la aplicación.

Comentarios

Entradas más populares de este blog

Cómo Iniciar un Proyecto Node.js

9-Nuestra Primera Plantilla con EJS

6-Middleware?