Yhoan Andres Galeano Urrea
Link para leer sobre la API que permita esta gran funcionalidad
https://developer.mozilla.org/es/docs/Web/API/Intersection_Observer_API
¿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:
¿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 RouterLink import { QuicklinkModule } from 'ngx-quicklink'; // Configura el router para usar Quicklink RouterModule.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?
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!
QuicklinkStrategy detecta los link que estan en el viewport y precarga esos modulos Utiliza IntersectionObserver para llevar a cabo su tarea.
installar quicklink
npm install gnx-quicklink --save
Importarlo en app.module y shared.module
// app.module.ts y tambien en shared.module.ts import { QuicklinkStrategy } from 'ngx-quicklink' @NgModule({ ... imports: [ ... QuicklinkModule ] })
Implementar la estrategia en el app-routing
// app-routing.module.ts import { QuicklinkStrategy } from 'ngx-quicklink' ... @NgModule({ imports: [RouterModule.forRoot(routes, { enableTRacing: false, preloadingStrategy: QuicklinkStrategy, paramsInheritanceStrategy: 'always' })], exports: [RouterModule] }) export class AppRoutingModule { }
listo.
Yhoan Andres Galeano Urrea
Link para leer sobre la API que permita esta gran funcionalidad
https://developer.mozilla.org/es/docs/Web/API/Intersection_Observer_API
Victor Barajas
quicklink solo detecta los RouteLink de angular?? si yo coloco this.route.navigateByUrl() en el ts tambien los detecta??
Sergio Naranjo Morales
No se porque me aparece este error en el shared module
Victor Alfredo Matzar Say
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.
Enrique Ortuno
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?
Javier Batres
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
Angelo Raso
Andres Gallardo
Muy bueno !
Carlos Arturo Hernandez Caceres
Comparto el link,
Juan Carlos Barcinilla Alarcon
Muy buena implementacion
José Miguel Barbosa Rodrigues
Y cuando tenemos una aplicación con módulos offline, que me recomendarías?
Alejandro Valenzuela
Buenas coders..consulta hay alguna forma de comparar las distintas estrategias?? Saludos
Nicolas Molina
ProfesorHola! 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.
Alejandro Valenzuela
Gracias Nico!
Jesus Antonio Castaneda Valencia
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
Nicolas Molina
ProfesorSi es buena recomendación que hagas precarga de los módulos pesados, así el usario no experimenta lentitud a la hora de la carga.
Darwin Sebastian Diaz Mejia
Excelente estrategia y explicación, una herramienta más! Por ello nunca pares de aprender!
JOHN WILAR SALAS BAUTISTA
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.