Добавление динамического контента о себе
Теперь, когда у вас есть многостраничный сайт с HTML-контентом, давайте добавим немного динамического HTML!
Приготовьтесь к...
- Определить заголовок вашей страницы в Frontmatter и использовать его в вашем HTML.
 - Условно отобразить HTML-элементы.
 - Добавить немного контента обо мне.
 
Любой HTML-файл допустим на языке Astro. Но вы можете делать больше, чем просто HTML с Astro!
Определите и использовать переменную
Откройте about.astro, который должен выглядеть так:
---
---<html lang="ru">  <head>    <meta charset ="utf-8" />    <meta name="viewport" content="width=device-width" />    <title>Astro</title>  </head>  <body>    <a href="/">Главная</a>    <a href="/about/">Обо мне</a>    <a href="/blog/">Блог</a>    <h1>Обо мне</h1>    <h2>… и моём новом сайт на Astro!</h2>
    <p>Я изучаю введение об Astro. Это вторая страница на моем сайте, и это первая, которую я построил самостоятельно!</p>
    <p>Этот сайт будет обновляться по мере того, как я буду проходить больше уроков, поэтому продолжайте проверять его и следите за тем, как идет мой путь!</p>  </body></html>- 
Добавьте следующую строку JavaScript в скрипт frontmatter, между разделителями кода (
---):src/pages/about.astro ---const pageTitle = "Обо мне";--- - 
Замените статический заголовок «Astro» и заголовок «Обо мне» на вашем HTML на динамическую переменную
{pageTitle}.src/pages/about.astro <html lang="ru"><head><meta charset ="utf-8" /><meta name="viewport" content="width=device-width" /><title>Astro</title><title>{pageTitle}</title></head><body><a href="/">Главная</a><a href="/about/">Обо мне</a><a href="/blog/">Блог</a><h1>Обо мне</h1><h1>{pageTitle}</h1><h2>… и моём новом сайт на Astro!</h2><p>Я изучаю введение об Astro. Это вторая страница на моем сайте, и это первая, которую я построил самостоятельно!</p><p>Этот сайт будет обновляться по мере того, как я буду проходить больше уроков, поэтому продолжайте проверять его и следите за тем, как идет мой путь!</p></body></html> - 
Обновите живой просмотр вашей страницы
/about.Текст вашей страницы должен выглядеть так же, и заголовок вашей страницы, отображаемый во вкладке вашего браузера, теперь должен читаться «Обо мне», а не «Astro».
Вместо того, чтобы вводить текст непосредственно в теги HTML, вы только что определили, а затем использовали переменную в двух разделах вашего
.astro-файла соответственно. - 
Используйте тот же шаблон для создания значения pageTitle для использования в
index.astro(«Главная страница») иblog.astro(«Мой блог об изучении Astro»). Обновите HTML этих страниц в обоих местах, чтобы ваш заголовок страницы соответствовал заголовку, отображаемому на каждой странице. 
- Определите переменные в своем скрипте Astro с помощью выражений JavaScript или TypeScript.
 - Используйте эти переменные в вашем шаблоне Astro внутри фигурных скобок , чтобы сообщить Astro, что вы используете некоторый JavaScript.
 
Напишите выражения JavaScript в Astro
- 
Добавьте следующий JavaScript в свой frontmatter, между разделителем кода:
(Вы можете настроить код под себя, но в этом руководстве будет использоваться следующий пример.)
src/pages/about.astro ---const pageTitle = "Обо мне";const identity = {firstName: "Николай",country: "Нидерланды",occupation: "Технический автор",hobbies: ["фотография", "дизайн", "тенис"],};const skills = ["HTML", "CSS", "JavaScript", "React", "Astro", "Оптимизация SEO"];--- - 
Затем добавьте следующий код в ваш HTML-шаблон, ниже вашего существующего контента:
src/pages/about.astro <p>Вот несколько фактов обо мне:</p><ul><li>Меня зовут {identity.FirstName}.</li><li>Я живу в {identity.country} и работаю в качестве {identity.occupation}.</li>{identity.hobbies.length >= 2 &&<li>Два моих увлечения: {identity.hobbies[0]} и {identity.hobbies[1]}</li>}</ul><p>Мои навыки:</p><ul>{skills.map((skill) => <li>{skill}</li>)}</ul> 
- Написание шаблона Astro напоминает написание HTML, но вы можете использовать в нем выражения JavaScript.
 - Скрипт frontmatter Astro содержит только JavaScript.
 - Вы можете использовать все современные логические операторы, выражения и функции JavaScript в любой секции вашего 
.astro-файла. Но фигурные скобки необходимы (только) в теле шаблона HTML. 
Проверьте свои знания
- 
Frontmatter файла
.astroнаписан на: - 
Кроме HTML, синтаксис Astro позволяет включать:
 - 
Когда вам нужно писать свои скрипты на JavaScript в фигурных скобках?
 
Условный рендер элементов
Вы также можете использовать свои скрипты для выбора того, нужно ли выводить отдельные элементы в <body> вашего HTML-контента.
- 
Добавьте следующие строки в свой скрипт Frontmatter, чтобы определить переменные:
src/pages/about.astro ---const pageTitle = "Обо мне";const identity = {firstName: "Николай",country: "Нидерланды",occupation: "Технический автор",hobbies: ["фотография", "дизайн", "тенис"],};const skills = ["HTML", "CSS", "JavaScript", "React", "Astro", "Оптимизация SEO"];const happy = true;const finished = false;const goal = 3;--- - 
Добавьте следующие строки ниже ваших существующих абзацев
Тогда проверьте живой просмотр на вкладке вашего браузера, чтобы увидеть, что отображается на странице:
src/pages/about.astro {happy && <p>Я рад изучать Astro!</p>}{finished && <p>Я закончил этот урок!</p>}{goal === 3 ? <p>Моя цель — закончить за 3 дня.</p> : <p>Моя цель — не 3 дня.</p>} - 
Фиксируйте изменения на GitHub, прежде чем перейти к следующему шагу. Делайте это в любое время, когда вы хотите сохранить свою работу и обновить ваш сайт.
 
Синтаксис шаблона Astro похож на синтаксис JSX. Если вы когда-нибудь задаетесь вопросом, как использовать свой скрипт в вашем HTML, то поиск способа сделать это в JSX, вероятно, хорошая отправная точка!
Анализ шаблона
Предположим, дан следующий скрипт .astro:
---const operatingSystem = "Linux";const quantity = 3;const footwear = "кросовок";const student = false;---Для каждого выражения шаблона Astro, ты можешь предсказать HTML (если он есть!), который будет отправлен в браузер? Щелкни, чтобы узнать, прав ли ты!
- 
<p>{operatingSystem}</p> - 
{student && <p>Я до сих пор учусь в школе</p>} - 
<p>У меня есть {quantity + 8} пар {footwear}</p> - 
{operatingSystem === "MacOS" ? <p>Я использую Mac.</p> : <p>Я не использую Mac.</p>}