Páginas, routing y rutas dinámicas
Aprende cómo funciona el sistema de archivos en Astro para crear páginas, rutas anidadas y páginas dinámicas.
Astro usa file-based routing. Eso significa que gran parte del routing se define simplemente creando archivos y carpetas en src/pages.
Rutas básicas
src/pages/index.astro -> /
src/pages/about.astro -> /about
src/pages/blog/index.astro -> /blog
No necesitas configurar un router aparte para esto.
Rutas anidadas
Si quieres una sección de blog:
src/pages/blog/index.astro
src/pages/blog/astro.astro
src/pages/blog/css.astro
Eso genera:
/blog/blog/astro/blog/css
Rutas dinámicas
Cuando no sabes el slug por adelantado a mano, usas archivos con corchetes:
src/pages/blog/[slug].astro
Ejemplo:
---
export async function getStaticPaths() {
return [
{ params: { slug: 'hola-astro' } },
{ params: { slug: 'mi-segundo-post' } },
];
}
const { slug } = Astro.params;
---
<h1>{slug}</h1>
Qué hace getStaticPaths
Le dice a Astro qué páginas dinámicas tiene que generar durante el build.
Es clave cuando haces:
- blogs
- glosarios
- fichas de productos
- categorías
Un ejemplo real de estructura útil
Para un blog pequeño:
src/pages/
index.astro
blog/
index.astro
[slug].astro
categorias/
[categoria].astro
Eso ya te permite tener:
- home
- listado de artículos
- detalle de artículo
- página por categoría
Cuándo usar página y cuándo componente
Una pista simple:
- si genera una URL, suele ser una página
- si es una pieza reutilizable dentro de una página, suele ser un componente
En la siguiente lección unimos eso con layouts, componentes y slots para no repetir estructura.