Construye tu primer plantilla
Prepárate para...
- Refactorizar elementos comunes en un diseño de página
- Utilizar el elemento
<slot />
de Astro para colocar el contenido de la página dentro de una plantilla - Pasar valores específicos de la página como props a tu plantilla
Todavía tienes algunos componentes de Astro repetidamente renderizados en cada página. ¡Es hora de refactorizar para crear una plantilla de página compartido!
Crea tu primer componente plantilla
-
Crea un nuevo archivo en la ubicación
src/layouts/BaseLayout.astro
. (Tendrás que crear primero una nueva carpetalayouts
). -
Copia el contenido completo de
index.astro
en tu nuevo archivo,BaseLayout.astro
.
Utiliza tu plantilla en una página
-
Sustituye el código en
src/pages/index.astro
por el siguiente: -
Comprueba de nuevo la vista previa del navegador para ver qué ha cambiado (o, alerta de spoiler: ¡no ha cambiado!).
-
Añade un elemento
<slot />
asrc/layouts/BaseLayout.astro
justo encima del componente de pie de página y, a continuación, comprueba la vista previa del navegador de tu página de inicio y observa lo que realmente ha cambiado esta vez.
La etiqueta <slot />
permite inyectar (o “introducir”) contenido hijo escrito entre las etiquetas de apertura y cierre <Component></Component>
en cualquier archivo Component.astro
.
Pasa valores específicos de la página como props
-
Pasa el título de la página a tu componente plantilla desde
index.astro
utilizando un atributo de componente: -
Cambia el script de tu componente plantilla
BaseLayout.astro
para recibir un título de página a través deAstro.props
en lugar de definirlo como una constante. -
Comprueba la vista previa de tu navegador para verificar que el título de tu página no ha cambiado. Tiene el mismo valor, pero ahora se muestra dinámicamente. Y ahora, en cada página individual puedes especificar tu propio título en la plantilla.
Pruébalo tu mismo - Utiliza tu plantilla en todas partes
Refactoriza tus otras páginas (blog.astro
y about.astro
) para que utilicen tu nuevo componente <BaseLayout>
para renderizar los elementos comunes de la página.
No lo olvides:
-
Pasar un título de página como props a través de un atributo de componente.
-
Deja que la plantilla se encargue de la representación HTML de los elementos comunes.
-
Eliminar cualquier cosa de cada página que esa página ya no es responsable de la representación, ya que está siendo manejado por la plantilla, incluyendo:
- Elementos HTML
- Componentes y tus importaciones
- Reglas CSS en una etiqueta
<style>
(por ejemplo,<h1>
en tu página ‘Acerca de’). - Etiquetas
<script>
.
Pon a prueba tus conocimientos
-
Un componente de Astro (archivo
.astro
) puede funcionar como una: -
Para mostrar un título de página en la página, puedes:
-
La información puede pasar de un componente a otro mediante: