0%
Inicio 9 Glossary Item 9 Tree Shaking
« Back to Glossary Index

Nivel Principiante

Imagina que estás empacando una caja con herramientas. En lugar de meter todas las herramientas de tu garaje, solo coges las que sabes que vas a usar para el trabajo. El Tree Shaking es una técnica de programación que hace lo mismo con tu código. Cuando construyes una aplicación, el «agitador de árboles» mira todos los archivos y se queda solo con el código que tu aplicación realmente necesita. De esta forma, el paquete final es mucho más pequeño y tu aplicación carga mucho más rápido.

Nivel Intermedio

El Tree Shaking es un proceso de optimización que elimina el código «muerto» o no utilizado de una aplicación en el momento de la construcción (build time). Su nombre proviene de la metáfora de un árbol: el árbol es todo tu código, y las ramas que se «agitan» son las partes que no se utilizan y se eliminan. Esta técnica es fundamental para reducir el tamaño final de los paquetes de JavaScript, lo que mejora el rendimiento del sitio web.

El Tree Shaking funciona de manera más efectiva con módulos ES6 (ECMAScript 2015), que utilizan la sintaxis import y export, ya que esta sintaxis es estática y permite a las herramientas de construcción determinar de antemano qué partes del código se usan y cuáles no. Las herramientas de construcción más comunes que lo implementan son Webpack y Rollup.

Nivel Avanzado

Técnicamente, el Tree Shaking es una forma de eliminación de código muerto (dead code elimination) que se basa en el análisis estático del código. El proceso ocurre en la fase de construcción del bundle final.

Un bundler moderno (como Webpack) realiza los siguientes pasos:

  1. Análisis: El bundler recorre el gráfico de dependencias de la aplicación, siguiendo todas las sentencias de import y export.
  2. Marcado: Marca las exportaciones que se usan en la aplicación como «vivas» (live) y las que no se usan como «muertas» (dead).
  3. Eliminación: En la fase de optimización, el bundler elimina todo el código que ha sido marcado como «muerto».

Para que el Tree Shaking funcione, es crucial que los módulos tengan una arquitectura que lo permita. Esto significa que los archivos de JavaScript deben utilizar la sintaxis import/export de ES6, ya que las sintaxis antiguas de require no son estáticas y no permiten al bundler saber qué partes del código se están usando. Un paquete que quiere ser compatible con Tree Shaking debe incluir la propiedad "sideEffects": false en su archivo package.json, lo que le indica al bundler que no tiene efectos secundarios y que se puede eliminar de forma segura si no se usa.

El Tree Shaking es un pilar de la optimización de rendimiento en las aplicaciones web modernas, ya que reduce drásticamente el tamaño del payload de JavaScript que el usuario tiene que descargar, lo que resulta en tiempos de carga más rápidos y una mejor Experiencia de Usuario (UX).

« Volver al índice del glosario