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 escrituraDocumentFragment 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:
¿Cómo minimizarías reflows en una operación masiva?
¿Qué es un memory leak y cómo evitarlo?
¿Cuál es la importancia de la accesibilidad en JavaScript?
¿Cómo estructurarías una SPA con enrutamiento?
¿Cómo combinarías delegación de eventos con localStorage?
Crea una aplicación completa (notas, favoritos, etc.) con persistencia.
Última actualización
¿Te fue útil?