CodeAventura
Astro
▸Producción▸Imágenes optimizadas

Misión

●iniciando…
Astro
Preparando entorno

Esto solo ocurre la primera vez que abres el curso.

20 / 22Imágenes optimizadas
Anterior

Imágenes optimizadas

El coste real de las imágenes

En la web típica, las imágenes son el peso mayoritario de una página. Y casi siempre están sin optimizar: tamaños descomunales, formatos antiguos (JPG/PNG cuando podrían ser WebP/AVIF), sin atributos width y height (lo que provoca CLS).

Astro tiene un componente nativo para resolver esto: <Image /> desde astro:assets.

El básico

Lo que hace por ti:

  • Optimiza el formato: convierte a WebP/AVIF cuando se puede.
  • Genera tamaños responsivos si pasas widths o densities.
  • Calcula width y height automáticamente desde los metadatos del archivo, evitando CLS.
  • Lazy loading por defecto (loading="lazy").

Imágenes locales

La forma recomendada: importar la imagen desde src/. Astro la procesa y la mueve al directorio público con un hash.

widths genera múltiples versiones; sizes le dice al navegador cuál usar.

Imágenes remotas

Para remotas:

  • Hay que indicar width y height (Astro no puede inferirlos).
  • Por seguridad, debes registrar el dominio en astro.config.mjs con image.domains o image.remotePatterns.

Recortar y transformar

format, quality, width/height (si los pasas, recorta), densities...

Otra opción: <picture> con getImage

Para casos avanzados (art direction, distintos crops por breakpoint), el helper getImage() te da control total:

Imágenes en Markdown / Content

Dentro de un .md o .mdx, las imágenes con sintaxis ![alt](path) se procesan automáticamente, igual que <Image />.

Tu desafío 🚀

Abre src/pages/index.astro. Tu trabajo:

  1. Importa Image desde "astro:assets".
  2. Importa una imagen local (puedes simular import logo from "../assets/logo.png" aunque no exista realmente).
  3. Renderiza <Image src={logo} alt="..." /> con un alt descriptivo.

Aunque la imagen no exista, el código tiene que estar correctamente escrito: Image importado desde el módulo correcto, y el componente con su alt. En un proyecto real, basta con poner el archivo en src/assets/ y Astro hace el resto.