Optimización de Bundles en Proyectos Web con Webpack
Clase 22 de 38 • Curso de Optimización Web
Contenido del curso
- 7

Entendiendo el Critical Rendering Path en Navegadores Web
11:11 - 8

Optimización de JavaScript para mejorar rendimiento web
10:53 - 9

Priorización de recursos CSS para mejorar rendimiento web
11:50 - 10

Optimización de Carga de Recursos con Preload, Prefetch y Preconnect
10:36 - 11

Optimización de Animaciones CSS para Mejorar el Renderizado
02:35
- 15

Optimización de Imágenes para Web: Formatos y Herramientas Efectivas
15:32 - 16

Optimización de Imágenes para Web: Uso de Tamaños y Formatos Adecuados
05:21 - 17

Comparación entre WebFonts y SVG: Ventajas y Desventajas
08:58 - 18

Lazy Loading de Imágenes: Técnicas y Estrategias Efectivas
10:14 - 19

Carga Adaptativa de Imágenes con Gatsby y Web API
04:13
- 20

Optimización de JavaScript para Producción Web
11:20 - 21

Análisis y Optimización de Bundles con Webpack
11:25 - 22

Optimización de Bundles en Proyectos Web con Webpack
17:14 - 23

Code Splitting con Webpack: Optimización de Bundles en Proyectos Web
06:31 - 24

Lazy Loading de Videos con JavaScript y Modales
21:44 - 25

Event Propagation y Filtrado de Eventos en JavaScript
17:24 - 26

Integración de Librerías en Proyectos JavaScript
14:58 - 27

Optimización de Carga de Modales con Lazy Loading en Webpack
13:25 - 28

Renderizado en Cliente vs. Servidor: Diferencias y Funciones
08:44 - 29

Implementación de Server Side Rendering en NodeJS
19:41 - 30

Optimización de Sitios con Static Site Generation
15:51
¿Cómo optimizar tus proyectos minimizando las dependencias?
En el desarrollo de aplicaciones, es común enfrentarse al desafío de manejar las dependencias de forma eficiente. Es crucial para mejorar el rendimiento y optimizar la entrega de nuestras aplicaciones. En este artículo, exploraremos estrategias y herramientas para identificar y reducir el impacto de las dependencias en nuestros proyectos. Prepárate para descubrir cómo optimizar tu código de manera efectiva.
¿Qué herramientas podemos usar para analizar las dependencias?
Existen varias herramientas y servicios que nos facilitan el análisis del impacto de las dependencias en nuestro proyecto:
-
Bundle Fogia: Es un servicio en línea que permite verificar cuánto influye cada librería en el tamaño de nuestro bundle antes y después de instalarlas.
-
Webpack y su plugin de análisis: Al ejecutar un análisis con
--analyze, podemos ver directamente el impacto de cada dependencia en nuestra aplicación.
¿Cuál es el impacto de cargar librerías completas innecesariamente?
Un error común es cargar librerías completas cuando se utilizan pocos métodos. Vamos a analizar el caso de Lodash:
import _ from 'lodash'
let result = _.get(data, 'key');
En el ejemplo anterior, estamos importando toda la librería Lodash cuando solo usamos el método .get(). Esto resulta en un desperdicio de recursos, ya que cargamos un montón de funcionalidades que no necesitamos.
¿Cómo aplicar Tree Shaking efectivamente?
Para evitar cargar code innecesario, podemos emplear tree shaking, una técnica que ayuda a eliminar el código muerto durante el proceso de construcción. Para eso, es esencial usar una sintaxis apropiada:
import get from 'lodash/get'
let result = get(data, 'key');
Al utilizar la importación específica de métodos, habilitamos a Webpack para realizar el tree shaking, incluyendo solo las partes necesarias de la librería en el bundle. El cambio de sintaxis como el mostrado reduce significativamente el peso del bundle.
¿Qué hacer con librerías que no soportan tree shaking?
Por ejemplo, la librería Moment.js no permite tree shaking. En este caso, debemos buscar librerías alternativas que sean más eficientes. Una buena opción es date-fns:
Pasos para reemplazar Moment.js por date-fns:
-
Desinstalar Moment.js:
npm uninstall moment -
Instalar date-fns:
npm install date-fns -
Reemplazar Moment.js en el código:
import { formatDistance, parseISO } from 'date-fns' let result = formatDistance(parseISO(date), new Date(), { addSuffix: true });
¿Qué resultados esperar al aplicar optimizaciones?
Al implementar estas estrategias, el peso del bundle de tu proyecto puede marcar una diferencia abismal. El resultado es que el bundle se vuelve mucho más liviano, reduciendo el tamaño de Gigabytes (GB) innecesarios a unos pocos Kilobytes (KB), lo cual es crucial para mejorar el rendimiento y la experiencia del usuario. El cambio en la estructura final del bundle será sustancial:
- Peso inicial: 1.5 MB.
- Peso después de optimizar: 30 KB.
Estas medidas no solo optimizan el tiempo de carga, sino también la eficiencia de tu aplicación al trasladar menos datos. Siempre recuerda evaluar y decidir si una librería se ajusta a las necesidades reales de tu proyecto.