¿Cómo mejorar el rendimiento de una aplicación Angular?
En el desarrollo de aplicaciones, especialmente en Angular, es fundamental asegurarse de que la aplicación funcione de manera óptima. Hacer un diagnóstico del estado actual es similar a realizarse un chequeo médico: se debe analizar qué está causando el sobrepeso en la aplicación para aplicar las mejoras necesarias. Aquí te proporcionamos una guía para optimizar tu aplicación con herramientas específicas y buenas prácticas.
¿Qué es Webpack Bundle Analyzer y cómo puede ayudarte?
Webpack Bundle Analyzer es una herramienta de gran utilidad que genera reportes gráficos sobre cómo se están utilizando los paquetes dentro de tu aplicación Angular. Este análisis te permite:
Visualizar qué paquetes están ocupando más espacio.
Detectar posibles reemplazos o alternativas para paquetes grandes.
Decidir si todos los paquetes son completamente necesarios.
Este diagnóstico es crucial para mantener una aplicación liviana y eficiente.
¿Cómo implementar Webpack Bundle Analyzer?
Para comenzar, necesitas tener acceso al proyecto de Angular. Los pasos son los siguientes:
Clonar el proyecto y preparar el entorno:
Clona el proyecto desde el repositorio especificado.
Instala las dependencias necesarias.
Instalar Webpack Bundle Analyzer:
Detén momentáneamente el servidor de Angular.
Instala el paquete usando el siguiente comando:
npminstall --save-dev webpack-bundle-analyzer
Es importante instalarlo como una dependencia de desarrollo, para evitar que el análisis afecte el entorno de producción.
Generar un análisis completo:
Ejecuta una compilación para producción asegurándote de generar un archivo de estadísticas. El comando es el siguiente:
ng build --prod --stats-json
Este proceso generará una carpeta con los archivos estáticos necesarios, incluidos los de estadísticas.
¿Cómo analizar y mejorar?
Una vez generado el archivo de estadísticas, debes:
Generar el reporte visual:
Ejecuta el siguiente comando en la terminal para iniciar el análisis con Webpack Bundle Analyzer:
Este comando abrirá un gráfico interactivo en tu navegador donde podrás visualizar:
El tamaño de todos los archivos y módulos de tu aplicación.
Cómo se descompone el tamaño de cada archivo.
Cuáles son los módulos o paquetes que más pesan.
¿Qué decisiones tomar después del análisis?
Con la información obtenida, podrás hacer lo siguiente:
Identificar librerías pesadas: Por ejemplo, si descubres que una librería está ocupando demasiado espacio, analiza si su uso es fundamental.
Evaluar costos y beneficios: Algunas librerías, como Angular y Moment.js, pueden necesitar ser justificadas en términos del valor que aportan versus el espacio que ocupan.
Buscar alternativas: Si una librería no justifica su peso, considera buscar alternativas más ligeras.
En resumen, optimizar tu aplicación Angular es un proceso continuo que requiere análisis y ajustes constantes. Herramientas como Webpack Bundle Analyzer son esenciales para comprender dónde puedes mejorar y cómo mantener un equilibrio entre funcionalidad y rendimiento. ¡Sigue explorando y aprendiendo para crear aplicaciones cada vez más eficientes!
Si te da un error tipo:` Bundle analyzer Error: listen EADDRINUSE :::8888
Hay de dos:
o matas el proceso con kill -9 <PID>
o le pasas por parámetro el puerto, uno distinto al que te marque en uso, ejemplo: npx webpack-bundle-analyzer -p 1234 dist/YourProjectName/stats-es2015.json
Eso funcionó para mi, decía que tenía el puerto 8888 ocupado y primero lo maté el proceso y después intenté con correr en otro puerto, me quedé con la segunda, porque el 8888 lo usa vscode con git.
Fin del comunicado, deje su buen laic.
Si a alguien le salio el mismo error que a mí al querer instalar node modules:
npm ERR! code E404npm ERR!404NotFound-GEThttps://registry.npmjs.org/es-abstract/-/es-abstract-1.14.0.tgz-Not found
Lo que hice fue ejecutar el comando:
npm i es-abstract@1.14.2
Y eso soluciono el problema
Gracias!
Baje los archivos del proyecto que adjuntos el profesor, pero al hacer npm install termina marcándome los siguientes errores,alguna solución que puedan proporcionarme a alguien que le haya sucedido igual.
PD. Intente subir la imagen desde el navegador firefox y no me funciono, hasta que utilice chrome.
A mi me pasa igual, me da error luego de descargar y ejecutar npm install
Estoy haciendo también el curso de PWA, me pregunto: si uso estrategia de cache, necesito usar estrategia de precarga de módulos?
y/o cual seria la forma correcta de usarlos?
Las dos se complementan recuerda que el preload hace la precarga de módulos y el cache lo que hace es evitar volver a descargarlo de Internet y lo pone en un cache, entonces si se hace precarga de módulos cuando el preload pida un módulo ya no iría a internet, sino que lo sacaría de cache, dos grandes formas de optimizar.
Video 3 y ya está 10/10 el curso xD, Para los que no les corre "--prod" intenten con:
ng build --configuration=production --stats-json
No necesité instalar webpack-bundle-analyzer como dependencia local. Sólo creé los archivos estáticos y el stats.json con ng build y luego usé el comando
Genero el ng build --prod --stats-json
Pero no me esta generando el archivo stats-es2015.js
revisa la carpeta dist
A mi me genero uno llamado simplemente stats
waaaaao esto es muy bueno para mi Ya!!!! lo voy a implementar
Uhhh esto yo lo hice hace un montón de tiempo! Y siempre que queria ver por que pesaba tanto tengo que ir a buscar "Como era que hacia?", 😂 Ahora voy a tener una guía de como hacerlo paso a paso ! Genial este curso! Muchas gracias!
El webpack bundle analizer nos permite ver visualmente que archivos del proyecto son los que están pesando más.
Descargué el proyecto y cuando le doy "npm install" me salen esos errores:
Necesito ayuda por favor.
hola nicolas, esa aplicacion que tienes ahi la realizas en otro curso o tienes cursos de angular desde basico hasta avanzado ?
Vengo del curso de lazy loading y programación modular en angular y veo que el proyecto es similar pero no es el mismo, puedo tomar esta clase y no quedar perdido?
Al ejectura npm install en el proyecto arroja una serie de errores y no se instala correctamente todas las dependencias y por ende el proyecto de ejemplo no se ejecuta.
Se podrá de alguna forma llevar está data con un pipeline que te la envíe por correo pata revisarla siempre que se haga un update en prod o bien que compare las versiones para ver si sube y en donde?
El equipo de Angular recomienda otra herramienta para analizar nuestros bundles, les dejo un Tutorial que hice al respecto
tengo un impedimento, no se como loggearme, como hago para obtener email y password?, así podría ir paso a paso
En librerías como AWS-SDK sugires llamar a un API adicional que haga la gestión para remover la librería del proyecto?