0%
Inicio 9 Glossary Item 9 Dynamic Imports
« Back to Glossary Index

Nivel Principiante

Imagina que tienes una aplicación web con muchas funciones, pero cuando la cargas por primera vez, el navegador tiene que descargar todo, incluso las partes que quizás no uses. Esto hace que la página sea lenta. Un Dynamic Import es como si le dijeras al navegador: «no descargues esta función hasta que yo te la pida». Así, el navegador solo carga lo que necesitas en el momento preciso, haciendo que la página inicial sea mucho más ligera y rápida. Es como descargar un manual de usuario solo cuando lo necesitas, no cuando compras el producto.

Nivel Intermedio

En el desarrollo web moderno, un Dynamic Import es una técnica de optimización que permite cargar módulos de JavaScript de forma asíncrona y bajo demanda. En lugar de cargar y empaquetar todo el código de una aplicación en un solo archivo (bundle), los dynamic imports permiten dividir el código en fragmentos (chunks). Estos fragmentos se cargan de forma diferida, solo cuando son necesarios.

La sintaxis de un dynamic import es similar a la de una promesa: import('ruta/al/modulo.js'). Cuando se ejecuta, esta función devuelve una promesa que se resuelve con el módulo cargado.

Las principales ventajas de los dynamic imports son:

  • Mejora del rendimiento: Al reducir el tamaño del paquete inicial de JavaScript, se acelera el tiempo de carga de la página.
  • Optimización de los recursos: Solo se cargan los módulos que el usuario necesita, lo que ahorra ancho de banda.
  • Separación de responsabilidades: Facilita la modularidad y la organización del código.

Nivel Avanzado

Técnicamente, los Dynamic Imports se implementan a través de la sintaxis import() de ECMAScript (ES2020). Esta función de importación asíncrona es un pilar del Code Splitting, una técnica de optimización de rendimiento. A diferencia de las declaraciones estáticas import que se evalúan al inicio del módulo, un dynamic import devuelve una promesa que se resuelve cuando el módulo solicitado se ha descargado, parseado y ejecutado.

El flujo de trabajo es el siguiente:

  1. Análisis de la dependencia: Al usar un bundler como Webpack, Rollup o Vite, el bundler detecta la sintaxis import() y crea un punto de división en el código.
  2. Generación de Chunks: El bundler genera un archivo de JavaScript separado (un chunk) para el módulo que se va a cargar de forma diferida.
  3. Carga asíncrona: Cuando el código import('...').then() se ejecuta en el navegador, este envía una solicitud HTTP para descargar el chunk.
  4. Ejecución: Una vez que el chunk se ha descargado, la promesa se resuelve, y el módulo se evalúa, lo que permite utilizar sus exportaciones.

Un ejemplo de uso en JavaScript es:

const boton = document.getElementById('mi-boton');

boton.addEventListener('click', () => {
  import('./modulo-pesado.js')
    .then(modulo => {
      modulo.hacerAlgo();
    })
    .catch(error => {
      console.error('La carga del módulo falló', error);
    });
});

Los dynamic imports son una herramienta esencial para la optimización del rendimiento web, ya que permiten a los desarrolladores controlar el tamaño de la carga inicial de sus aplicaciones, lo que mejora las métricas de rendimiento como el LCP (Largest Contentful Paint).

« Volver al índice del glosario