Layouts y Props
Usando los layouts o “plantillas de página” ¶
👀 Alerta, código duplicado
Si te has dado cuenta index.astro
y about.astro
son casi iguales. Una de las malas prácticas en programación es duplicar código.
🌎 Dicen los que saben que “El mejor código es el que no se escribe”.
Como queremos hacer las cosas bien desde el principio nos vamos a meter en otro de los brillantes conceptos de Astro: los layouts.
🔍 Un layout (o “plantilla de página”) es como una plantilla contenedor que nos permite meter dentro páginas de Astro.
Crea la carpeta src/layouts
.
Crea dentro el fichero SiteLayout.astro
.
Copia y pega este código allí:
👀 Fíjate que hemos extraído las partes comunes de nuestras dos páginas a este nuevo layout y hemos incorporado la etiqueta <slot />
propia de Astro. Ahí aparecerá luego nuestro contenido.
Avanzamos un poco más.
Modifica src/pages/index.astro
y déjalo así:
Aquí han pasado dos cosas importantes
- Hemos utilizado la parte del “script” (la parte que hay entre las líneas
---
para importar el layout que has creado. ¡Eso es JavaScript! - Cambiamos el código repetido para incluirlo dentro de las etiquetas
<SiteLayout>
. ¡Eso es HTML!
¿Te acuerdas de lo que te dije antes de los layouts?
Un layout es un “contenedor”, una plantilla donde “metemos dentro” páginas.
💪 ¡Pues acabas de conseguirlo!
💦 Repite el mismo proceso para la página de about.astro
🔍 ¿Ves lo que está pasando?
Nuestra etiqueta <title>
se repite tanto en la home como en /about
.
Podemos resolverlo muy fácil, ya verás:
Props ¶
🔍 Las props son propiedades que podemos pasar de un sitio a otro en los componentes de Astro. Realmente SiteLayout.astro
es un “componente”, aunque con algunas características especiales.
Cada componente de Astro tiene dos partes bien diferenciadas como ya has visto antes:
_10---_10// Script del componente (JavaScript)_10---_10<!-- HTML del componente -->
Ahora queremos que cada page
pueda indicarle al layout
un title
diferente.
Para eso usaremos el objeto Astro
, disponible en todos los componentes del proyecto.
Astro.props
va a ser capaz de leer el atributo title
cuando se lo pase una página.
Aplica los cambios a los siguientes ficheros:
Repite en index.astro
💪 ¡Visita las páginas y lo tienes hecho!
⚡️ Pon a prueba lo que has aprendido
Este contenido llega a ti gracias a la Comunidad de suscriptores de Web Reactiva