Carregamento lento angular: um guia completo

Carga diferida angular: una guía completa

Aumente el rendimiento de su aplicación Angular de carga diferida. Cargue componentes bajo demanda y mejore la experiencia del usuario. Obtenga más información sobre la carga diferida angular aquí.

Imagem em destaque

Angular es un marco de JavaScript popular para crear aplicaciones web. Proporciona un enfoque estructurado para el desarrollo web, ofreciendo características como plantillas declarativas e inyección de dependencia. Al observar las estadísticas, se puede ver que Angular tiene 86,7K estrellas en GitHub . Lazy Load es una técnica en Angular que le permite cargar módulos y componentes solo cuando son necesarios, en lugar de cargar toda la aplicación por adelantado.

¿Qué es la carga diferida angular?

Lazy Load es un concepto en Angular donde los módulos y componentes se cargan bajo demanda cuando la aplicación los requiere. A diferencia de la carga frontal tradicional, que carga todos los componentes simultáneamente. Lazy Load solo carga los componentes necesarios cuando el usuario navega a una ruta específica o realiza una acción específica.

Lazy Load funciona dividiendo su aplicación en módulos. Cada módulo representa una sección lógica de su aplicación, como una página específica o un conjunto de funciones relacionadas. Cuando el usuario accede a una ruta asociada a un módulo, el módulo y sus componentes se cargan dinámicamente, reduciendo así el tiempo de carga inicial y mejorando el rendimiento.

Beneficios de la carga diferida

Lazy Load ofrece varios beneficios para aplicaciones desarrolladas por una empresa de desarrollo Angular, como la carga bajo demanda de módulos y componentes, lo que reduce el tamaño del paquete inicial. Esto conduce a un mejor tiempo de interactividad y una renderización más rápida, lo que resulta en una experiencia de usuario más fluida. Con Lazy Load, la empresa de desarrollo Angular garantiza que solo se carguen los componentes y recursos necesarios para una ruta o acción específica, optimizando así la utilización de recursos y reduciendo la sobrecarga de memoria.

Cuándo utilizar la carga diferida

La carga diferida es particularmente útil si su aplicación Angular es grande y tiene varios módulos. Lazy Load puede mejorar el tiempo de carga inicial al cargar solo los módulos necesarios al navegar a rutas específicas. También es útil cuando su aplicación tiene una estructura de enrutamiento compleja. La carga diferida puede simplificar la configuración de enrutamiento del módulo Angular y mejorar el rendimiento general al cargar módulos bajo demanda.

Cómo implementar carga diferida en Angular

Aquí hay una guía paso a paso sobre cómo implementar la carga diferida en una aplicación Angular.

Paso 1: configurar el enrutador angular

Angular Router juega un papel crucial en la implementación de la carga diferida. Le permite definir rutas a diferentes secciones de su aplicación y especificar qué módulos deben cargarse de forma diferida. Para configurar Angular Router, importe los módulos necesarios a su módulo raíz, generalmente en el archivo app.module.ts.

importar {RouterModule, Rutas} desde '@angular/router';

Ahora defina sus rutas usando la matriz Rutas.

 rutas constantes: Rutas = (
 { ruta: 'casa', componente: HomeComponent },
 // Otras rutas cargadas con impaciencia...
 );

Paso 2: crear un módulo de recursos

Los módulos de funciones son módulos angulares que encapsulan una función o sección específica de su aplicación. Son una parte integral de la carga diferida porque los cargará de forma diferida cuando sea necesario. Para crear uno, genere un nuevo módulo usando Angular CLI.

 ng generar módulo módulo de características

Luego, cree los componentes, servicios y otros recursos necesarios en el módulo de recursos. Después de eso, exporte los componentes, directivas y canalizaciones que se usarán fuera del módulo de recursos agregándolos a la matriz de exportaciones en el decorador @NgModule del módulo.

Paso 3: configurar rutas para carga diferida

Ahora que está configurado, es hora de configurar las rutas para la carga diferida.

En su módulo raíz, app.module.ts, actualice la matriz de rutas para incluir una ruta de carga diferida.

 rutas constantes: Rutas = (
 { ruta: 'casa', componente: HomeComponent },
 { ruta: 'lazy', loadChildren: => import('./feature-module/feature.module').luego(m => m.FeatureModule) },
 // Otras rutas cargadas con impaciencia...
 );

La propiedad loadChildren se utiliza para especificar la ruta al módulo y la clase del módulo que se cargará de forma diferida. La función de importación importa dinámicamente el módulo. Elimine cualquier declaración de importación para el módulo cargado de forma diferida del módulo raíz, ya que ahora se cargará dinámicamente.

Paso 4: Carga diferida de módulos de recursos

Para cargar módulos de funciones de forma diferida en su aplicación Angular, debe realizar un pequeño ajuste en las plantillas de componentes o configuraciones de enrutamiento que hacen referencia a los componentes cargados de forma diferida.

En la configuración de su plantilla o módulo de enrutamiento, actualice la ruta al componente de carga diferida agregando la ruta definida en el módulo de recursos de carga diferida.

 { ruta: 'componente-lazy', componente: LazyComponent }

Cambiar a

 { ruta: 'componente-lazy', loadChildren: => import('./feature-module/feature.module').luego(m => m.LazyComponent) }

Este cambio garantiza que el componente se cargue de forma diferida cuando se solicite. Asegúrese de actualizar cualquier otra referencia a componentes cargados de forma diferida en toda su aplicación.

¡Es eso! Ha implementado con éxito la carga diferida en su aplicación Angular. Ahora, cuando un usuario navega a una ruta que requiere el módulo de carga diferida, se cargará según demanda, lo que mejorará el tiempo de carga inicial de su aplicación.

Estrategias avanzadas de carga diferida

Angular ofrece estrategias avanzadas para carga diferida, como precarga de módulos. La precarga de módulos le permite cargar módulos críticos en segundo plano después de la carga inicial de la página, lo que mejora la experiencia del usuario al reducir los tiempos de carga posteriores.

Estrategia de precarga en Angular

La precarga es una técnica en la que los módulos se cargan en segundo plano después de la carga inicial de la página. Permite que la aplicación cargue módulos críticos con anticipación para que estén disponibles inmediatamente cuando el usuario navega a las rutas correspondientes.

La precarga proporciona un equilibrio entre el rendimiento y la experiencia del usuario. Garantiza que los módulos esenciales estén disponibles cuando sea necesario, reduciendo así los tiempos de carga posteriores.

Estrategias de precarga personalizadas

Angular le permite crear estrategias de precarga personalizadas para ajustar el rendimiento de la aplicación. Con una estrategia de precarga personalizada, puede definir qué módulos precargar y cuándo cargarlos según sus requisitos específicos.

Al implementar una estrategia de precarga personalizada, tiene un control detallado sobre los módulos precargados, optimizando así el equilibrio entre el tiempo de carga inicial y la navegación posterior.

Ajuste del rendimiento con carga diferida

Para medir y mejorar el rendimiento de una aplicación Angular mediante carga diferida, considere lo siguiente.

Métricas de rendimiento y carga diferida

Evalúe métricas clave de rendimiento, como Time to Interactive (TTI) y First Contentful Paint (FCP). Evalúan el impacto de la carga diferida en el rendimiento de su aplicación. Estas métricas lo ayudan a cuantificar las mejoras logradas mediante la carga diferida e identificar áreas para una mayor optimización.

Optimización de la carga diferida

Optimice la carga diferida utilizando técnicas como la reducción del tamaño del paquete y la división de código. También puede utilizar herramientas como el analizador de paquetes webpack para analizar y optimizar el tamaño de sus paquetes. Asegúrese de que sus módulos de carga diferida estén estructurados de manera eficiente para evitar dependencias innecesarias y duplicación de código.

Carga diferida con bibliotecas angulares

La carga diferida también se puede aplicar a las bibliotecas Angular para optimizar el rendimiento inicial de su aplicación.

Comprender las bibliotecas angulares

Las bibliotecas angulares son paquetes que contienen código reutilizable, como componentes, directivas y servicios. Proporcionan una forma de compartir funcionalidad entre múltiples aplicaciones Angular y mejorar la capacidad de mantenimiento del código.

Cómo se cargan las bibliotecas Angular

De forma predeterminada, las bibliotecas de Angular se cargan con entusiasmo cuando se inicia la aplicación. Esto significa que todo el código de la biblioteca está incluido en el paquete de la aplicación principal, lo que genera un aumento en su tamaño y potencialmente afecta el tiempo de carga inicial.

La carga diferida de bibliotecas Angular implica cargar dinámicamente módulos de biblioteca cuando sean necesarios. Esto reduce el tamaño del paquete inicial y optimiza el proceso de carga.

Implementación de módulos con carga diferida para bibliotecas angulares

Aquí hay una guía paso a paso sobre cómo implementar la carga diferida para bibliotecas Angular.

Identificación de bibliotecas para carga diferida

El primer paso es identificar qué bibliotecas de su aplicación Angular se beneficiarían de la carga diferida. Considere bibliotecas que no se utilizan con frecuencia o que solo son necesarias en partes específicas de su aplicación.

Crear módulos de recursos para bibliotecas lentas

Cree un módulo de recursos para cada biblioteca que desee cargar de forma diferida. Por ejemplo, si tiene una biblioteca llamada EjemploLib. Cree un nuevo módulo llamado EjemploLibModule usando Angular CLI.

ng generar módulo EjemploLibModule

Dentro del módulo de recursos, importe y exporte los componentes, directivas y canalizaciones de la biblioteca necesarios. Esto permite que otros módulos utilicen estos componentes una vez cargados.

Configuración del enrutador angular para carga diferida

En su módulo raíz, normalmente app.module.ts, importe el módulo Angular Router:

 importar {RouterModule, Rutas} desde '@angular/router';

Defina sus rutas utilizando la matriz Rutas y configure rutas de carga diferida para cargar módulos de recursos:

 rutas constantes: Rutas = (
 { ruta: 'casa', componente: HomeComponent },
 { ruta: 'lazy', loadChildren: => import('./path/to/ExampleLibModule').luego(m => m.ExampleLibModule) },
 // Otras rutas cargadas con impaciencia...
 );

La propiedad loadChildren especifica la ruta al módulo de recursos y la clase de módulo que se cargará de forma diferida.

Actualización del código de la aplicación

Actualice el código de su aplicación para usar componentes, directivas y canales de módulos de recursos en lugar de directamente desde bibliotecas. Por ejemplo, si previamente importó un componente de ejemplo de la biblioteca de esta manera.

 importar {EjemploComponente} desde 'ejemplo-lib';

Actualícelo para importar desde el módulo de recursos.

 importar {EjemploComponente} desde './ruta/a/ExampleLibModule';

Repita este paso para cualquier otro lugar de su aplicación donde utilice componentes, directivas o canalizaciones de biblioteca.

¡Es eso! Ha implementado con éxito la carga diferida para bibliotecas Angular. Las bibliotecas ahora se cargarán según demanda cuando se acceda a las rutas asociadas, lo que mejorará el rendimiento de inicio de su aplicación.

Prueba de carga diferida de bibliotecas angulares

Para probar si la carga diferida de bibliotecas Angular se implementa correctamente, puede usar herramientas como la pestaña Red en Chrome DevTools o el analizador de paquetes webpack.

En la pestaña Red, observe las solicitudes de red al navegar por diferentes rutas en su aplicación. Verifique que los módulos de la biblioteca se carguen según demanda y que el tamaño del paquete inicial de la aplicación del módulo se reduzca debido a la carga diferida.

El analizador de paquetes webpack es una herramienta útil para ver y analizar el tamaño de sus paquetes. Puede proporcionar información sobre el impacto de la carga diferida en el tamaño del paquete de su aplicación.

Carga diferida y gestión de estado.

Cuando se trata de módulos de carga diferida y bibliotecas de administración de estado como NgRx o Akita, hay algunas consideraciones a tener en cuenta para mantener el estado de la aplicación en módulos de carga diferida.

estado Descripción
Estado basado en recursos Con la carga diferida, es mejor organizar la administración del estado en función de las funciones o secciones de su aplicación. Cada módulo de carga diferida puede tener su propia porción de estado administrada por la biblioteca de administración de estado correspondiente.
Estado compartido Si tiene un estado compartido al que se debe acceder en módulos de carga diferida, puede utilizar técnicas como la inyección de dependencia o un enfoque basado en servicios. Cree un servicio compartido o utilice los mecanismos proporcionados por una biblioteca de administración de estado para compartir el estado entre módulos.

Mejores prácticas para implementar carga diferida en Angular

A continuación se presentan algunas prácticas recomendadas y consejos a seguir al implementar la carga diferida en Angular:

  1. Organice su código en módulos de funciones basados ​​en las secciones lógicas de su aplicación. Esto promueve la reutilización y facilita la gestión de la carga diferida.
  2. Protege tus rutas lentas con protectores de ruta adecuados. Los protectores de ruta le permiten implementar autorización, autenticación y otra lógica personalizada antes de permitir el acceso a un módulo de carga diferida.

Conclusión

Lazy Load es una técnica poderosa en Angular que mejora el rendimiento de la aplicación al cargar módulos y componentes bajo demanda. Con una implementación y optimización adecuadas, la carga diferida puede mejorar significativamente la experiencia del usuario en sus aplicaciones Angular. Las empresas que buscan crear aplicaciones Angular optimizadas deberían considerar la opción de subcontratar el trabajo de desarrollo de Angular a una empresa de renombre.

Si te gustó este artículo, mira:

  • Dominar el enrutamiento angular: una guía completa
  • Estructura de proyecto angular: mejores prácticas para archivos y carpetas
  • Inyección de dependencia en Angular: una guía completa
  • Dominar el enlace de datos angular: una guía completa para expertos
  • Principales bibliotecas y marcos de componentes de Angular UI
  • ¿Qué es Angular y por qué su empresa debería considerarlo para su desarrollo?
  • Los mejores frameworks Javascript de la actualidad
  • Angular para empresas
  • ¿Cuál es el mejor framework para el desarrollo web?

preguntas frecuentes

¿Cuáles son las implicaciones de rendimiento del uso de carga diferida en Angular?

Las implicaciones positivas para el rendimiento cuando carga módulos Angular lentamente es que conduce a una carga inicial de la página más rápida, un uso reducido de la memoria y un mejor almacenamiento en caché debido a que solo se cargan los módulos necesarios bajo demanda. Mientras que lo negativo es que, dependiendo de la implementación, puede haber un ligero retraso al navegar a un módulo cargado de forma diferida, ya que es necesario recuperarlo del servidor.

¿Cómo puedo probar que los módulos de carga diferida se implementan correctamente en mi aplicación Angular?

Para probar si los módulos de carga diferida se implementan correctamente en su aplicación Angular, puede usar herramientas de monitoreo de red como la pestaña Red de Chrome DevTools para inspeccionar las solicitudes de red. Verificar que los módulos esperados estén cargados bajo demanda al acceder a las rutas correspondientes.

¿Se puede utilizar la carga diferida en combinación con otras técnicas de optimización del rendimiento en Angular?

Sí, la carga diferida se puede combinar con otras técnicas de optimización del rendimiento en Angular, como Code Splliting, Tree Shaking y Preloading.

Fuente: BairesDev

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.