Skip to content

03. Creación de Páginas

Las páginas estáticas son archivos que se convierten en HTML durante el build y se sirven tal cual al usuario, sin procesamiento adicional en el servidor.

  • Generar contenido HTML puro y rápido
  • Optimizar rendimiento y SEO
  • Reducir carga del servidor
  • Facilitar el despliegue en CDNs
  • Mejorar la experiencia del usuario

Proceso de Creación:

  1. Archivo: Crear archivo .astro en src/pages/
  2. Routing: El nombre del archivo determina la URL
  3. Build: Astro genera HTML estático
  4. Deploy: Se sirve como archivo estático

Características:

  • Cada archivo en pages/ se convierte en una ruta
  • Soporta .astro, .md, .mdx, .html
  • Frontmatter para lógica del servidor
  • HTML generado en build time

Mapeo automático:

  • index.astro → Ruta raíz de la carpeta
  • about.astro/about
  • blog/index.astro/blog
  • blog/post.astro/blog/post
  • Rendimiento: Carga instantánea
  • SEO: HTML completo para crawlers
  • Seguridad: Sin código del servidor expuesto
  • Escalabilidad: Fácil de cachear y distribuir
  • Costo: Hosting económico
TipoExtensiónUso
Astro.astroPáginas dinámicas con componentes
Markdown.mdContenido simple
MDX.mdxMarkdown con componentes
HTML.htmlHTML puro

3.2 Rutas dinámicas y parámetros (slug, id, etc.)

Section titled “3.2 Rutas dinámicas y parámetros (slug, id, etc.)”

Las rutas dinámicas permiten generar múltiples páginas desde un solo archivo usando parámetros variables en la URL.

  • Generar páginas desde datos externos (APIs, bases de datos)
  • Crear páginas para cada elemento de una colección
  • Evitar duplicación de código
  • Escalar fácilmente con más contenido
  • Mantener URLs limpias y SEO-friendly

Tipos de Parámetros:

1. Parámetro Simple: [param]

  • Captura un segmento de URL
  • Ejemplo: [id].astro/123, /abc
  • Acceso: Astro.params.id

2. Parámetros Múltiples: [param1]/[param2]

  • Captura múltiples segmentos
  • Ejemplo: [category]/[id].astro/tech/123
  • Acceso: Astro.params.category, Astro.params.id

3. Rest Parameters: [...param]

  • Captura todos los segmentos restantes
  • Ejemplo: [...slug].astro/any/nested/path
  • Acceso: Astro.params.slug (string con /)

Función obligatoria para rutas dinámicas

Propósito:

  • Definir qué páginas generar
  • Proporcionar datos para cada página
  • Se ejecuta solo en build time

Retorna:

  • Array de objetos
  • Cada objeto tiene params y props
  • params: Valores de los parámetros de URL
  • props: Datos adicionales para la página
1. Build Time
2. getStaticPaths() se ejecuta
3. Retorna array de rutas
4. Astro genera HTML para cada ruta
5. Páginas estáticas listas
  • Blog: [slug].astro para posts
  • E-commerce: [id].astro para productos
  • Documentación: [...slug].astro para docs anidadas
  • Perfiles: [username].astro para usuarios
  • Categorías: [category]/[item].astro

3.3 Uso de layouts para plantillas globales

Section titled “3.3 Uso de layouts para plantillas globales”

Los layouts son componentes especiales que envuelven el contenido de las páginas, proporcionando estructura y elementos comunes.

  • Reutilizar estructura común (header, footer, nav)
  • Mantener consistencia visual
  • Evitar duplicación de código
  • Facilitar mantenimiento
  • Centralizar estilos globales

Componentes con <slot />:

  • El layout define la estructura
  • <slot /> marca dónde va el contenido
  • Las páginas se “insertan” en el slot
  • Pueden tener múltiples slots nombrados

Proceso:

  1. Página importa layout
  2. Página se envuelve en layout
  3. Contenido de página va en <slot />
  4. Layout renderiza estructura completa

1. Layout Base

  • Estructura HTML básica
  • Meta tags, estilos globales
  • Usado por todos los layouts

2. Layout de Sección

  • Específico para una sección (blog, docs)
  • Hereda de layout base
  • Añade elementos específicos

3. Layout Anidado

  • Un layout dentro de otro
  • Permite composición
  • Mayor flexibilidad

Pasar datos al layout:

  • Título de página
  • Meta description
  • Clase CSS específica
  • Configuración de sección
  • DRY: No repetir código
  • Mantenibilidad: Cambios en un solo lugar
  • Consistencia: Diseño uniforme
  • Flexibilidad: Layouts anidados
  • Escalabilidad: Fácil añadir páginas
Sin LayoutCon Layout
Código duplicadoCódigo reutilizable
Difícil mantenerFácil mantener
InconsistenciasConsistente
Más líneasMenos líneas
🐝