¿Cómo mejorar la carga de módulos en una aplicación web?
La carga eficiente de módulos es esencial para ofrecer una experiencia de usuario fluida, especialmente en aplicaciones web grandes. Los métodos tradicionales de precarga, como la precarga completa (Atom Moyo) o la precarga selectiva, tienen sus limitaciones cuando se trata de optimizar el consumo de memoria y evitar tiempos de carga prolongados. Pero, ¿qué tal si pudiéramos hacer que la aplicación cargue dinámicamente solo lo que el usuario necesita en tiempo real? Aquí es donde entra en juego la estrategia de precarga "Quicklink".
¿Qué es la estrategia de precarga "Quicklink"?
"Quicklink" es un enfoque innovador que pre-carga de manera dinámica los módulos en función del comportamiento del usuario, en lugar de lo que el desarrollador elige adelantado. Utiliza técnicas de observación de intersección (Intersection Observer) para detectar los enlaces que entran en el viewport de la aplicación y los pre-carga automáticamente.
¿Cómo funciona la intersección del observador (Intersection Observer)?
La Intersección del Observador (Intersection Observer API) monitorea los elementos que entran y salen del viewport:
Detecta automáticamente qué tan adentro o afuera está un elemento del viewport.
Precarga los elementos a medida que aparecen en vista al hacer scroll.
Ofrece un rendimiento superior puesto que evita la costosa necesidad de medir scrolls manualmente.
¿Cómo implementar "Quicklink" en Angular?
Para implementar "Quicklink" en una aplicación Angular:
Instalación: Inicia instalando la librería necesaria para "Quicklink" en tu aplicación utilizando npm.
Configuración: Configura correctamente tu aplicación para que los módulos correspondientes utilicen la estrategia de precarga de "Quicklink":
// Importa el módulo de Quicklink en los módulos que utilizan RouterLinkimport{QuicklinkModule}from'ngx-quicklink';// Configura el router para usar QuicklinkRouterModule.forRoot(routes,{ preloadingStrategy:QuicklinkStrategy})
Optimización dinámica: Solo pre-cargarás los módulos a medida que sean necesarios al desplazarse por la aplicación. Por ejemplo, si tienes módulos como "Github" o "Admin" que utilicen RouterLink, asegúrate de que estén configurados para pre-cargar sólo cuando estén visibles en pantalla.
Pruebas y ajuste: Ejecuta tu aplicación en un entorno de pruebas para verificar que los módulos se cargan dinámicamente conforme al desplazamiento del usuario.
¿Cuáles son los beneficios de esta estrategia?
Rendimiento mejorado: Reduce el tiempo de carga inicial y mejora el uso de memoria al cargar solo lo necesario.
Experiencia de usuario: Ofrece una carga instantánea para los módulos que el usuario está a punto de ver, mejorando la percepción de velocidad de la aplicación.
Escalabilidad: Facilita el manejo de aplicaciones más grandes sin sacrificar la velocidad de carga.
Implementar "Quicklink" en tu aplicación puede transformar cómo los usuarios experimentan la carga de contenido, haciendo que cada interacción sea más intuitiva y satisfactoria. ¡Manos a la obra y sigue optimizando tus aplicaciones!
quicklink solo detecta los RouteLink de angular?? si yo coloco this.route.navigateByUrl() en el ts tambien los detecta??
No se porque me aparece este error en el shared module
A mi también me aparecía el error, luego de cerrar y volver a abrir VScode, ya me no me mostraba ningún error.
Que ventaja real tiene esta forma de pre-cargar, si en realidad todos los routerlink estan en el homepage? solo seria util en el caso que tengas links que estan dentro de otros modulos?
En el caso que tuvieras permisos y menú en base a estos, solo se pre cargan los que el usuario puede ver y no todos los del proyecto
En respuesta al comentario de Javier Batres, cargar módulos de acuerdo a permisos del usuario puede lograrse con la propiedad canLoad.
Esta forma de pre cargar módulos resultaría útil (por ejemplo) si se tiene una vista donde el usuario debe "scrollear" y al final de la página se encuentre con un botón el cual lo lleva a una nueva vista con un módulo independiente. Al mostrarse el botón en pantalla se puede comenzar a pre cargar el módulo para mejorar la experiencia de usuario
Y cuando tenemos una aplicación con módulos offline, que me recomendarías?
Buenas coders..consulta hay alguna forma de comparar las distintas estrategias??
Saludos
Hola! no tienen una comparativa clara ya que todas tiene diferentes casos de uso, en resumen lo podría compararla según el caso de uso:
Selective Strategy: Para apps y una cantidad de usuarios no muy grande, en donde tu tienes conocimiento de el navegador y velocidad que van tener tus usuarios.
QuickLink: En caso anterior pero no sabes que navegador y que velocidad van a tener los usuarios.
GuessJS: Cuando quieres mejorar la carga de una forma mucho más avanzada pero debes tener tracking de Google Analytics.
Gracias Nico!
Es recomendable pre cargar el modulo mas pesado?
stad 1.6 mb
parsed 1.05 mb
gzipped 111.72 kb
Estos son los datos del modulo mas grande del proyecto en el que estoy trabajando
Si es buena recomendación que hagas precarga de los módulos pesados, así el usario no experimenta lentitud a la hora de la carga.
Excelente estrategia y explicación, una herramienta más! Por ello nunca pares de aprender!
Si tengo mi menú de hamburguesa en la esquina superior izquierda con todos los links de opciones a diferentes módulos estos también se cargan.