Desarrollo en curso, en breve se publicarán el resto de temas.

Capítulo 12: Buenas Prácticas y Proyecto Integrador

Este capítulo final consolida lo aprendido y establece patrones profesionales para construir aplicaciones web escalables y mantenibles.

12.1. Minimizar Reflow y Repaint (Rendimiento)

El navegador necesita actualizar la pantalla cuando el JavaScript modifica el DOM. Estas operaciones son costosas.

Reflow: Recalcular layout (más caro)

Repaint: Actualizar píxeles (menos caro que reflow)

Evitar reflows innecesarios:

// ❌ MALO: 5 reflows
elemento.style.width = '100px';     // Reflow 1
elemento.style.height = '100px';    // Reflow 2
elemento.style.margin = '10px';     // Reflow 3

// ✓ MEJOR: 1 reflow usando clase
elemento.classList.add('tamaño-grande');

// ✓ MEJOR: Usar cssText
elemento.style.cssText = 'width: 100px; height: 100px; margin: 10px;';

Lectura después de escritura:

// ❌ MALO: Fuerza reflow
elemento.style.width = '100px';
console.log(elemento.offsetWidth); // Reflow forzado
elemento.style.height = '100px';
console.log(elemento.offsetHeight); // Reflow forzado

// ✓ MEJOR: Leer luego escribir
console.log(elemento.offsetWidth);  // Una lectura
console.log(elemento.offsetHeight); // Una lectura
elemento.style.width = '100px';     // Una escritura
elemento.style.height = '100px';    // Una escritura

DocumentFragment para inserciones masivas:


12.2. Separación de responsabilidades (HTML/CSS/JS)

Mantén clara la separación: HTML (estructura), CSS (estilos), JavaScript (lógica).


12.3. Gestión de memoria: Limpiar eventos

Cuando eliminas elementos del DOM, debes también eliminar sus event listeners para evitar memory leaks.


12.4. Accesibilidad (A11Y) desde JavaScript

Accesibilidad es responsabilidad de HTML + CSS + JavaScript.


12.5. Estructura de una aplicación SPA vainilla

SPA = Single Page Application. Una página que maneja el contenido dinámicamente.

HTML:


12.6. Proyecto integrador: Todo App

Aplicación de tareas con almacenamiento persistente:


Resumen del Capítulo

El desarrollo profesional de aplicaciones web requiere entender rendimiento, accesibilidad y arquitectura. Usa patrones como delegación de eventos, separación de responsabilidades y almacenamiento local para crear aplicaciones escalables y mantenibles.

💡 Conceptos Clave:

  • Reflow/Repaint: Optimizar actualizaciones del DOM

  • DocumentFragment: Inserciones masivas eficientes

  • Separación: HTML (estructura), CSS (estilos), JS (lógica)

  • Memory leaks: Limpiar listeners al eliminar elementos

  • Accesibilidad: ARIA, elementos semánticos

  • SPA: Single Page Application con enrutamiento dinámico

  • Delegación: Un listener para muchos elementos

  • localStorage: Persistencia sin servidor

🤔 Preguntas de Reflexión:

  1. ¿Cómo minimizarías reflows en una operación masiva?

  2. ¿Qué es un memory leak y cómo evitarlo?

  3. ¿Cuál es la importancia de la accesibilidad en JavaScript?

  4. ¿Cómo estructurarías una SPA con enrutamiento?

  5. ¿Cómo combinarías delegación de eventos con localStorage?

  6. Crea una aplicación completa (notas, favoritos, etc.) con persistencia.

Última actualización

¿Te fue útil?