Макеты
Макеты — это компоненты Astro, которые определяют структуру пользовательского интерфейса (UI), например, шаблон страницы.
Мы условно используем термин «макет» для компонентов Astro, которые создают общие элементы UI, такие как заголовки, панели навигации и нижние колонтитулы, используемые на разных страницах. Типичный компонент макета Astro используется для предоставления страницам Astro, Markdown или MDX следующего:
- оболочки страницы (теги
<html>,<head>и<body>) <slot />, чтобы указать, куда должно быть вставлено содержимое отдельной страницы.
Но в компоненте макета нет ничего особенного! Они могут принимать свойства и импортировать и использовать другие компоненты, как и любой другой компонент Astro. Они могут включать в себя компоненты UI-фреймворков (EN) и скрипты на стороне клиента (EN). Они даже не обязательно должны предоставлять полную оболочку страницы, вместо этого их можно использовать как частичные шаблоны пользовательского интерфейса.
Однако, если компонент макета содержит оболочку страницы, его элемент <html> должен быть родительским для всех остальных элементов в компоненте.
Компоненты макетов обычно размещаются в директории src/layouts вашего проекта для удобства организации, но это не является обязательным требованием; вы можете разместить их в любом месте вашего проекта. Вы даже можете поместить компоненты макета рядом со своими страницами, добавив префикс _ к именам макетов (EN).
Пример макета
Заголовок раздела «Пример макета»---import BaseHead from '../components/BaseHead.astro';import Footer from '../components/Footer.astro';const { title } = Astro.props;---<html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <BaseHead title={title}/> </head> <body> <nav> <a href="#">Главная</a> <a href="#">Посты</a> <a href="#">Контакты</a> </nav> <h1>{title}</h1> <article> <slot /> <!-- Ваше содержимое вставляется сюда --> </article> <Footer /> </body> <style> h1 { font-size: 2rem; } </style></html>