Botón para abrir el Menú Botón para cerrar el Menú
Logo da empresa Alura
Iniciar Sesión Nuestros Planes
Formaciones Conoce a Luri
  • Programación _
  • Front End _
  • Data Science _
  • DevOps _
  • Innovación y Gestión _
  • Inteligencia Artificial _
Artículos de Tecnología > Front-end

¿Cómo puede Lazy Loading mejorar el rendimiento de mi aplicación Angular?

Leonardo-Castillo
Leonardo-Castillo
5 de Agosto

Compartir

Mira este artículo:
  1. ¿Qué es lazy loading?
  2. ¿Por qué utilizar lazy loading?
  3. ¿Cómo implementar lazy loading?
  4. Configurando nuestros archivos de ruta
  5. Comprobación de funcionamiento
  6. Conclusión

¿Alguna vez has accedido a un sitio web que tardó mucho en cargar el contenido de la página? Si es así, no creo que estuvieras contento con eso. Como desarrolladores, queremos brindar la mejor experiencia posible a los usuarios. Por lo tanto, te mostraré cómo mejorar el rendimiento de tu aplicación Angular usando Lazy Loading.

Angular, de forma predeterminada, carga todos los archivos a la vez en la primera carga, un comportamiento llamado Eager Loading (“carga ansiosa”). De esta manera, tan pronto como se accede a la aplicación, ésta carga todos los módulos diseñados contenidos en el archivo del módulo principal, es decir, la aplicación completa, incluso si algunos componentes no se requieren de inmediato.

Por lo tanto, cuanto más grande sea la aplicación, más tiempo llevará descargar los archivos y mostrarlos en la pantalla. Debido a esto, el acceso por primera vez puede resultar en un tiempo de respuesta muy largo para los usuarios.

La espera de carga cobra aún más relevancia cuando pensamos en el acceso a través de aplicaciones móviles (tableta, celular) y conexiones lentas. Entonces, ¿cómo solucionar este problema? Ahí es donde lazy loading entra para ayudarnos.

En este artículo te mostraré:

  • ¿Qué es lazy loading en angular?
  • las ventajas de utilizar lazy loading;
  • cómo implementar esta técnica en tu aplicación;
  • cómo comprobar su funcionamiento.

¿Comenzamos?

¿Qué es lazy loading?

Lazy loading es una técnica recomendada por la guía de mejores prácticas en la documentación de Angular y se utiliza para mejorar el rendimiento de su aplicación, además de hacerla más organizada y escalable. Este es un patrón en el que los módulos se cargan según demanda, es decir, sólo cuando se solicitan y no necesariamente en el primer acceso.

¿Por qué utilizar lazy loading?

El uso de lazy loading en su aplicación tiene algunas ventajas importantes, como:

  • carga inicial más rápida;
  • estructura modularizada más organizada;
  • mayor escalabilidad;
  • código más limpio y, en consecuencia;
  • mayor facilidad de mantenimiento.

Ahora que conocemos las principales ventajas de utilizar lazy loading , aprendamos cómo podemos implementarla en nuestro proyecto.

¿Cómo implementar lazy loading?

En lugar de importar todos sus módulos al módulo principal ( app.module.ts), crearemos otros módulos y los cargaremos a pedido. Creemos un módulo llamado book, usando el siguiente comando Angular CLI:

La opción --routing también creará el archivo de rutas del módulo generado. De manera similar, crearemos otro módulo, llamado users.

Si tiene preguntas sobre estos comandos, puedes obtener más información en este articulo Creando aplicaciones Angular con Angular CLI .

En el módulo book se crearon 4 componentes, que nos servirán de ejemplo para configurar nuestras rutas:

Y en el módulo users, se creó el componente Login:

Configurando nuestros archivos de ruta

Ahora, necesitamos configurar las rutas para nuestra aplicación.

  • En el archivo de ruta principal, AppRoutingModule tendremos la siguiente configuración de ruta:

En este archivo, para los dos módulos creados anteriormente, se utiliza lazy loading. Así, cuando accedamos a las rutas /book o /users , a través de la función loadChildren, se realizará la importación dinámica del módulo en cuestión, mediante una promesa .

Para comparar, veamos cómo se hace la configuración para cargar el HomeComponent, cuando el path está vacío. En este caso, la carga es “ansiosa” (Eager Loading).

Ahora necesitamos configurar los archivos de enrutamiento de los módulos que creamos, ya que ellos son responsables de definir sus propias rutas.

  • En el archivo de ruta del módulo book ,BookRoutingModule tendremos la siguiente configuración de ruta:

Nuestras rutas de la aplicación quedaron así:

/book para cargar BookReadComponent;

/book/create para cargar BookCreateComponent;

/book/update para cargar BookUpdateComponent;

/book/delete para cargar BookDeleteComponent

  • En el archivo de rutas del módulo users, UsersRoutingModule tendremos la siguiente configuración de rutas:

Aquí, cuando accedemos a http://localhost:4200/usuarios, se cargará el LoginComponent (el puerto puede variar según su configuración).

También debemos prestar atención al hecho de que en AppRoutingModule, usamos imports de RouterModule.forRoot(routes)para especificar que este es el módulo de enrutamiento raíz.

Y en los módulos secundarios, se agrega RouterModule.forChild(routes).

forRoot() se debe utilizar una sola vez en la aplicación, ya forChild() se puede utilizar en varios módulos.

En cuanto a la implementación, es importante tener cuidado de eliminar la importación de módulos que se están cargando bajo demanda, del archivo app.module.ts, si previamente fueron importados allí, de lo contrario se seguirán cargando de forma preliminar.

Comprobación de funcionamiento

Al ejecutar la aplicación con el comando ng serve, podemos ver que, antes de usar lazy loading, Angular cargó todo de una vez ( Initial Chunk Files ). Ahora, la aplicación se divide en varios fragmentos ('chunks') y sólo se cargarán cuando sea necesario. Por tanto, el tamaño inicial del paquete cargado es menor y, en consecuencia, el tiempo de carga es menor.

Antes:

Después:

Conclusión

En este artículo, entendemos la importancia de lazy loading en Angular y aprendemos cómo implementar esta técnica para mejorar el rendimiento de nuestra aplicación.

¿Quieres aprender más sobre Front-end y Angular? Vea nuestras capacitaciones:

  • Formación Front-end;
  • Formación Angular.

Obtenga más información sobre las promesas:

  • Async/await en JavaScript: ¿qué es y cuándo usar programación asíncrona?

Este articulo fue traducido y adaptado por Daysibel Cotiz.

Artículo Anterior
¿Cómo aplicar validación a formularios reactivos en Angular?

Ver otros artículos sobre Front-end

Navegación

  • Planes
  • Instructores
  • Blog
  • Política de privacidad
  • Términos de uso
  • Sobre nosotros
  • Preguntas frecuentes

¡CONTÁCTANOS!

  • ¡Quiero entrar en contacto!

Blog

  • Programación
  • Data Science
  • Front End
  • Innovación y Gestión
  • DevOps
  • Inteligencia Artificial

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

NOVEDADES Y LANZAMIENTOS

Aliados

  • Programa de aceleração Scale-Up Endeavor
  • En Alura somos unas de las Scale-Ups seleccionadas por Endeavor, programa de aceleración de las empresas que más crecen en el país.
  • Growth Academy 2021 do Google For Startups
  • Fuimos unas de las 7 startups seleccionadas por Google For Startups en participar del programa Growth Academy en 2021
Alura

Una empresa del grupo Alun

Logo do grupo Alun

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

Cursos

Cursos de Programación
Lógica de Programación | Java
Cursos de Front End
HTML y CSS | JavaScript | React
Cursos de Data Science
Data Science | Machine Learning | Excel | Base de Datos | Data Visualization | Estadística
Cursos de DevOps
Docker | Linux
Cursos de Innovación y Gestión
Transformación Ágil | Marketing Analytics
Cursos de Inteligencia Artificial

Alura

  • Educação em Tecnologia

    • logo fiap FIAP
    • logo casa do codigo Casa do Código
    • logo pm3 PM3 - Cursos de Produto
  • Mais Alura

    • logo alura start START BY Alura
    • logo alura lingua Alura Língua
    • logo alura para empresas Alura Para Empresas
    • logo alura latam Alura LATAM
  • Comunidade

    • logo tech guide Tech Guide
    • logo 7 days of code 7 days of code
    • logo Hipsters ponto Jobs Hipsters ponto Jobs
  • Podcasts

    • logo Hipster Network Hipster Network
    • logo Hipsters ponto Tech Hipsters ponto Tech
    • logo Dev sem fronteiras Dev sem Fronteiras
    • logo Like a Boss Like a Boss
    • logo IA Sob Controle IA Sob Controle
    • logo Mesa de Produto Mesa de Produto
    • logo Decode Decode
    • logo FIAPCast FIAPCast