Создайте свой первый макет
Приготовьтесь к...
- Рефакторить общие элементы в макете страницы
- Использовать элемента 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
файл) может функционировать как: -
Чтобы отображать заголовок страницы на странице, вы можете:
-
Информацию можно передавать из одного компонента в другой следующим образом: