Создайте свой первый макет
Приготовьтесь…
- Рефакторить общие элементы в макете страницы
- Использовать элемент Astro
<slot />
для размещения содержимого страницы в макете - Передать значения, специфичные для страницы, как свойств в макет
У вас все еще есть некоторые компоненты Astro, которые неоднократно отображаются на каждой странице. Пришло время снова провести рефакторинг, чтобы создать общий макет страницы!
Создание вашего первого компонента макета
Заголовок раздела Создание вашего первого компонента макета-
Создайте новый файл в расположении
src/layouts/BaseLayout.astro
. (Сначала вам нужно создать новую папкуlayouts
.) -
Скопируйте весь контент из
index.astro
в ваш новый файл,BaseLayout.astro
.
Использование макета на странице
Заголовок раздела Использование макета на странице-
Замените код в файле
src/pages/index.astro
на следующий: -
Снова проверьте предварительный просмотр в браузере, чтобы заметить, что изменилось (или, спойлер: не изменилось!).
-
Добавьте элемент
<slot />
в файлsrc/layouts/BaseLayout.astro
прямо перед компонентом футера, затем проверьте предварительный просмотр в браузере вашей страницы «Главная» и заметьте, что на этот раз действительно изменилось!
Элемент <slot />
позволяет вам внедрять (или «slotting in») дочерний контент, написанный между открывающими и закрывающими тегами <Component></Component>
, в любой файл Component.astro
.
Передача значений, относящихся к странице, в качестве свойств
Заголовок раздела Передача значений, относящихся к странице, в качестве свойств-
Передайте заголовок страницы в ваш компонент макета из
index.astro
, используя атрибут компонента: -
Измените скрипт вашего компонента макета
BaseLayout.astro
, чтобы он получал заголовок страницы черезAstro.props
, а не определял его как константу. -
Проверьте предварительный просмотр в браузере, чтобы убедиться, что заголовок вашей страницы не изменился. Его значение осталось прежним, но теперь он рендерится динамически. Теперь на каждой отдельной странице можно указывать свой собственный заголовок для макета.
Попробуйте сами — Используйте свой макет везде
Заголовок раздела Попробуйте сами — Используйте свой макет вездеПеределайте остальные страницы (blog.astro
и about.astro
) так, чтобы они использовали ваш новый компонент <BaseLayout>
для отображения общих элементов страницы.
Не забудьте:
-
Передайте заголовок страницы в виде свойств через атрибут компонента.
-
Позвольте макету отвечать за рендеринг HTML любых общих элементов.
-
Удалите из каждой страницы все, за что она больше не отвечает за рендеринг, потому что управляется макетом, включая:
- элементы HTML
- компоненты и их импорты
- CSS правила в теге
<style>
(например,<h1>
на вашей странице Главная) - теги
<script>
Проверьте свои знания
Заголовок раздела Проверьте свои знания-
Компонент Astro (
.astro
файл) может функционировать как: -
Чтобы отображать заголовок страницы на странице, вы можете:
-
Информацию можно передавать из одного компонента в другой следующим образом: