Carga diferida de componentes en Angular para mejorar rendimiento
Clase 32 de 36 • Curso de Angular Avanzado
Contenido del curso
- 7

Buenas prácticas con variables locales en Angular
09:14 - 8

Optimización de Imágenes en Angular con NG Optimizate Image
17:08 - 9

Optimización de Rutas Amigables para SEO en Angular
11:27 - 10

"Reactividad en Angular: Migración a Input Signals"
20:42 - 11

Migración de Inputs a Signals en Angular: Mejora de Rendimiento y Flujo
12:24 - 12

Migración de Outputs en Angular: De Decoradores a Funciones
07:35 - 13

Primitivas reactivas de Angular: Uso de Linked Signal y Computed
12:56 - 14

Sincronización de Componentes en Angular con Model y Signals
12:03 - 15

Interoperabilidad de RXJS y Signals en Angular
11:18 - 16

Conversión de Observables a Signals en Angular con toSignal
08:07 - 17

Interoperabilidad de RXDS y Signals en Angular: Uso de RX Resourcers
11:10 - 18

Manejo de Parámetros Reactivos con RX Resource en Angular
09:18 - 19

Manejo de Promesas y Fetch en Angular sin RXJS
07:59 - 20

Reactividad en Angular: Uso de Signals para Consultas DOM
09:00 - 21

Configuración de Prettier para HTML en Angular
05:28 quiz de Nuevas Funcionalidades en Angular
- 22

Server Side Rendering en Angular: Builders y Migración
10:17 - 23

Server Side Rendering con Angular: Mejora Rendimiento y SEO
13:26 - 24

Manejo de APIs del Navegador con Angular: Uso de AfterNextRender
09:43 - 25

Geolocalización y APIs: Creando un Mapa de Tiendas Cercanas
15:39 - 26

Habilitar Pre-rendering en Angular para Generación de Sitios Estáticos
11:26 - 27

Despliegue de Aplicaciones Node.js con App Fiber Hosting
18:12 quiz de Server-Side Rendering (SSR) y Navegación
- 28

Generación de Meta Tags Dinámicos con Angular y Open Graph
15:11 - 29

Creación de MetaTags Dinámicos en Angular
12:51 - 30

Proceso de Hydration y Event Replay en Angular
05:54 - 31

Implementación de Productos Relacionados en Angular eCommerce
09:26 - 32

Carga diferida de componentes en Angular para mejorar rendimiento
10:10 - 33

Optimización de Incremental Hydration en Angular
06:14 - 34

Configuración de Server Routing en Angular
10:43 - 35

Aplicaciones Sin Zone.js: Migración a Signals en Angular
13:02 - 36

Despliegue y Reactividad Avanzada en Angular
00:53
La optimización de rendimiento en Angular es un aspecto fundamental para desarrollar aplicaciones web modernas y eficientes. Mediante técnicas avanzadas como lazy loading y code splitting, podemos mejorar significativamente la experiencia del usuario al reducir los tiempos de carga y optimizar el uso de recursos. Estas estrategias son esenciales tanto para aplicaciones con server-side rendering como para aplicaciones tradicionales de cliente.
¿Qué es el lazy loading y code splitting en Angular?
El lazy loading en Angular es una técnica que permite cargar partes específicas de la aplicación solo cuando son necesarias. Tradicionalmente, este concepto se aplicaba a nivel de rutas, donde cada página cargaba su propio JavaScript específico en lugar de cargar todo el código en el bundle inicial.
El code splitting complementa esta técnica al dividir la aplicación en diferentes "chunks" o fragmentos de JavaScript. Esto significa que:
- Cada ruta puede tener su propio archivo JavaScript específico (por ejemplo, about.js, products.js)
- Solo se carga el código necesario cuando el usuario navega a una página específica
- Se reduce significativamente el tamaño del bundle inicial
Esta estrategia mejora el rendimiento inicial de la aplicación, ya que el usuario no necesita descargar código que posiblemente nunca utilice.
¿Cómo funciona el lazy loading tradicional por rutas?
En el enfoque tradicional de lazy loading en Angular:
- La aplicación se divide en módulos por rutas
- Cuando el usuario navega a una ruta específica, Angular carga dinámicamente el módulo correspondiente
- Esto reduce el tiempo de carga inicial y mejora la experiencia del usuario
Este método ha sido la base de la optimización en Angular durante mucho tiempo, pero las técnicas modernas nos permiten ir más allá.
¿Cómo implementar lazy loading a nivel de componentes?
Las técnicas modernas de JavaScript nos permiten aplicar lazy loading no solo a nivel de rutas, sino también a nivel de componentes individuales dentro de una misma página. Esto es particularmente útil cuando:
- Una página contiene múltiples componentes pesados
- Algunos componentes están fuera del viewport inicial
- Ciertos componentes solo se muestran bajo condiciones específicas
Para implementar esta técnica en Angular, utilizamos la directiva defer:
<div style="margin-bottom: 80vh;">
<!-- Contenido principal del producto -->
</div>
@defer (on viewport) {
<app-related-products [products]="relatedProducts"></app-related-products>
} @placeholder {
<!-- Contenido opcional mientras se carga -->
}
En este ejemplo:
- El componente
app-related-productssolo se cargará cuando entre en el viewport del usuario - El JavaScript asociado a este componente no forma parte del chunk inicial
- Si el usuario nunca hace scroll hasta esa sección, el código nunca se cargará
Esta técnica optimiza aún más el rendimiento al cargar componentes específicos solo cuando realmente son necesarios, similar a cómo funciona el lazy loading de imágenes.
¿Qué opciones ofrece la directiva defer?
La directiva defer en Angular ofrece varias opciones para controlar cuándo se carga un componente:
on viewport: Carga el componente cuando entra en el viewport del usuarioon hover: Carga el componente cuando el usuario pasa el cursor sobre un elementoon interaction: Carga el componente cuando el usuario interactúa con un elementowhen: Permite definir una condición personalizada para la cargaimmediate: Carga el componente tan pronto como el navegador esté desocupado
Estas opciones proporcionan gran flexibilidad para optimizar la carga de componentes según las necesidades específicas de la aplicación.
¿Cuáles son los beneficios del lazy loading a nivel de componentes?
Implementar lazy loading a nivel de componentes ofrece numerosos beneficios:
- Reducción del tamaño inicial de JavaScript: Solo se carga lo esencial para la visualización inicial
- Mejora en el tiempo de carga: La página principal se carga más rápido al diferir componentes secundarios
- Optimización de recursos: Se utilizan los recursos del navegador de manera más eficiente
- Mejor experiencia de usuario: La interactividad inicial mejora al priorizar los componentes visibles
- Aplicable a todo tipo de aplicaciones: Funciona tanto en aplicaciones con server-side rendering como en aplicaciones tradicionales de cliente
Esta técnica es especialmente valiosa en aplicaciones complejas con muchos componentes o en aplicaciones de back office con numerosos formularios y elementos interactivos.
El lazy loading a nivel de componentes representa una evolución natural en la optimización de aplicaciones Angular, permitiendo un control más granular sobre cómo y cuándo se carga el código. Al implementar estas técnicas, podemos crear aplicaciones más rápidas, eficientes y con mejor experiencia de usuario, independientemente de si utilizamos server-side rendering o no.
¿Has implementado alguna de estas técnicas en tus proyectos? Comparte tu experiencia en los comentarios y cuéntanos cómo ha mejorado el rendimiento de tus aplicaciones Angular.