Layout
Layouty to komponenty Astro używane do tworzenia ponownie używalnej struktury UI, takiej jak szablon strony.
Umownie korzystamy z terminu “layout” dla komponentów, które zapewniają wspólne elementy interfejsu wspóldzielone na stronach, takie jak stopki, nagłówki czy nawigacja. Najczęściej layout przekazuje stronom Astro, Markdown bądź MDX:
- powłokę strony (tagi
<html>
,<head>
i<body>
) - tag
<slot />
aby okreslić miejsce gdzie treść ma zostać wstrzyknięta.
Ale w komponencie układu nie ma nic szczególnego! Layouty mogą akceptować propy oraz importować i korzystać z innych komponentów jak każdy inny komponent Astro. Potrafią też zawierać w sobie komponenty frameworków UI (EN) i skrypty client-side (EN). Nie muszą nawet posiadać całej powłoki strony, a jedynie być wykorzystywane jako cząstkowe szablony UI.
Jednakże, jeśli komponent layout’u zawiera powłokę strony, to jego tag <html>
musi być elementem nadrzędnym wszystkich innych elementów. Wszystkie znaczniki <style>
(EN) lub <script>
(EN) muszą zostać zawarte w elemencie <html>
.
Komponenty layout’u zazwyczaj znajdują się w folderze src/layouts
Twojego projektu, aby zadbać o organizację. Nie jest to jednak wymóg; możesz je umieszczać w dowolnym miejscu projektu. Mogą one nawet istnieć obok swoich stron, przez dodanie prefiksu _
do nazw layout’ów (EN).
Przykładowy layout
Dział zatytułowany Przykładowy layout---import BaseHead from '../components/BaseHead.astro';import Footer from '../components/Footer.astro';const { title } = Astro.props;---<html lang="pl"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <BaseHead title={title}/> </head> <body> <nav> <a href="#">Strona główna</a> <a href="#">Posty</a> <a href="#">Kontakt</a> </nav> <h1>{title}</h1> <article> <slot /> <!-- tutaj jest wstrzykiwany Twój komponent --> </article> <Footer /> </body> <style> h1 { font-size: 2rem; } </style></html>