ФронтендJavaScriptTypeScriptHTML / CSS

Astro 7 для новичка: собираем быстрый блог-портфолио из Markdown

Создаём блог-портфолио на Astro 7: коллекция Markdown, динамические страницы проектов, типизированные данные и статическая сборка сайта.

Кодик

Автор

6 мин чтения

Astro 7 можно освоить на одном небольшом проекте, если сразу видеть вход, действие и результат. Astro превращает Markdown-файлы в типизированную коллекцию контента и заранее собирает быстрые HTML-страницы. Ниже вы соберёте работающий пример и проверите обычный и граничный сценарии.

Новичку хочется добавить проекты через простой текстовый файл, но обычное копирование HTML-карточек быстро приводит к разным датам, ссылкам и разметке. Поэтому отделим настройку, входные данные, основное действие и проверку. В этой статье вы соберёте портфолио с главной страницей, карточками проектов и отдельным URL для каждого Markdown-файла. Проверка: новый Markdown-файл появляется в списке, открывается по своему slug, а npm run build создаёт статические страницы без ошибок.

1Соберите минимум

создать Astro-приложение и запустить dev-сервер. Не расширяйте проект до первого успешного запуска.

2Увидьте данные

неверное поле frontmatter ловится при сборке. Проверяйте значение, а не отсутствие ошибки.

3Измените правило

После успеха добавьте поле featured и отдельный блок только для избранных проектов. Так копирование станет практикой.

Как устроен учебный проект Astro 7

Файлы Markdown хранят данные и текст, content collection проверяет frontmatter, а шаблоны Astro отвечают за список и страницу проекта. Держите ввод, логику и отображение раздельно: тогда каждый этап можно проверить отдельно.

ЭтапДействиеПроверяемый результат
Проектсоздать Astro-приложение и запустить dev-серверглавная страница открывается локально
Контентописать схему коллекции и добавить Markdown-проектневерное поле frontmatter ловится при сборке
Маршрутыполучить записи и создать статические путикаждый slug открывает отдельную страницу
Сборкавыполнить astro check и astro buildкаталог dist содержит готовые HTML-файлы

Контрольные точки: проект, контент, маршруты и сборка. Следующий шаг начинается после совпадения с ожидаемым результатом.

Путь данных в проекте Astro 7
От входных данных до видимого результата. Сначала проверяется вход, затем действие и только потом интерфейс.

Зафиксируйте первый успех Добавьте один файл в src/content/projects и временно удалите обязательный title. Сборка должна показать точное место ошибки схемы. Сохраните команду запуска и ожидаемый вывод.

Собираем рабочий пример шаг за шагом

Пример сверялся с актуальной документацией официального релиза Astro 7 на 19 октября 2026 года. Создайте проект командой npm create astro@latest, выберите пустой шаблон и установите зависимости. Для проверки типов добавьте @astrojs/check. Проверьте текущую папку через pwd или Get-Location. Вставьте пример целиком, выполните один раз, затем разбирайте по частям.

---
import { getCollection } from "astro:content"

const projects = await getCollection("projects")
projects.sort((a, b) => b.data.year - a.data.year)
---

<main>
  <h1>Проекты Ангела</h1>
  <div class="grid">
    {projects.map((project) => (
      <article>
        <p>{project.data.year}</p>
        <h2><a href={'/projects/' + project.id + '/'}>{project.data.title}</a></h2>
        <p>{project.data.summary}</p>
        <ul>{project.data.stack.map((item) => <li>{item}</li>)}</ul>
      </article>
    ))}
  </div>
</main>
Что должно произойти после запуска
  • Главная выводит карточки из Markdown и сортирует проекты по году.
  • Ссылка карточки ведёт на статическую страницу проекта с тем же frontmatter.
  • Повторный запуск даёт тот же предсказуемый результат.
  • Пустой ввод получает понятное сообщение вместо падения.

Компонент не хранит проекты внутри разметки. Он запрашивает коллекцию и строит одинаковую карточку для каждой записи. Найдите в примере вход, проверку и место формирования результата.

Хрупкий и проверяемый вариант Astro 7
Что отличает устойчивый проект от случайного запуска. Явные границы делают ошибку локальной и понятной.

Что происходит внутри и почему это работает

Content collection задаётся через loader и схему. Во время сборки Astro читает файлы, проверяет типы полей и передаёт записи шаблонам. Статический маршрут создаёт URL заранее, поэтому браузер получает готовый HTML. Логику держите отдельно от вывода: функция получает аргумент и возвращает значение, а интерфейс показывает его. В Astro 7 старый Content Layer API удалён, поэтому новый проект следует строить на актуальной конфигурации коллекций, а не копировать пример для Astro 4.

ЧастьЗа что отвечаетЧто проверить
Markdownхранит title, year, stack, summary и основное описаниеодна запись содержит все обязательные поля
Коллекциязагружает файлы и валидирует frontmatterошибка схемы останавливает сборку до публикации
Шаблоныстроят список и динамические страницыURL и подписи формируются из одной записи

Markdown удобен, пока структура материала проста. Не переносите в frontmatter сложное состояние интерфейса. Схема должна проверять только данные контента, а вычисления и отображение остаются в компонентах. Изображения храните предсказуемо и передавайте через поддерживаемый image API. Не прячьте поток в одном обработчике: сохраните вход, проверьте его, вызовите операцию и только затем обновите интерфейс.

Проверьте границу Создайте второй проект с более свежим годом и убедитесь, что он поднялся в начало без ручного переставления HTML. Меняйте одно условие за прогон, чтобы видеть причину.

Проверяем проект и добавляем свою функцию

Добавьте фильтр по технологии через query-параметр или отдельные страницы тегов. Сначала вычислите список доступных тегов из коллекции. До правки запишите ожидаемое поведение одним предложением. После граничного теста повторите обычный сценарий.

Проверка своими руками
  1. Сохраните ожидаемый результат: новый Markdown-файл появляется в списке, открывается по своему slug, а npm run build создаёт статические страницы без ошибок.
  2. Измените правило: добавьте поле featured и отдельный блок только для избранных проектов. Сначала предскажите итог.
  3. Передайте граничное значение и убедитесь, что приложение не падает.
  4. Верните корректные данные и объясните роли трёх основных частей.
Готово, если выполняются все пункты
  • главная страница открывается локально
  • неверное поле frontmatter ловится при сборке
  • каждый slug открывает отдельную страницу
  • каталог dist содержит готовые HTML-файлы

Главная польза коллекции в одном источнике правды: карточка, страница и метаданные используют одну запись. Полезная правка проходит от нового ввода до видимого результата.

Четыре контрольные точки Astro 7
Четыре проверки перед следующим шагом. Каждый следующий этап начинается после наблюдаемого результата.

Что запомнить и куда двигаться дальше

Перед публикацией проверьте заголовки, description, абсолютные ссылки и страницу 404. Затем соберите production-версию и откройте файлы из dist локальным сервером. Для закрепления откройте в проекте React + Vite, в лендинге на Tailwind CSS и в базовом портфолио разработчика.

Как изучить тему в Кодике

Сначала закрепите HTML, массивы и map, затем переходите к коллекциям и статическим маршрутам. Сначала восстановите главную функцию и проверьте её на трёх значениях.

ШагЧто разобратьМини-проверка
1. ОсноваСемантическую разметку карточек и основы CSS GridОбъясните вход и выход функции.
2. ИнструментФормат Markdown, frontmatter, Zod-схему и getCollectionПовторите команду по памяти.
3. ПроектСписок проектов и страницу по slugПроверьте два сценария.
4. РефакторингSEO-шаблон, фильтры тегов и проверку сборкиРазделите ввод, логику и вывод.

После портфолио добавьте один новый проект только через Markdown, не трогая компоненты. Это главный тест архитектуры. Базовый синтаксис закрепите через курс HTML.

Старый пример конфигурации

Код для раннего Content Layer может не работать в Astro 7. Сверяйте импорты с текущей документацией.

Дублирование проектов в HTML

Карточки снова расходятся с Markdown. Получайте все данные из коллекции.

Нет схемы frontmatter

Опечатка в year проявляется уже на странице. Валидируйте обязательные поля.

Проверка только dev-режима

Динамический путь может отсутствовать в статической сборке. Всегда запускайте build.

Сверяйтесь с первичной документацией. Команды и ограничения примера проверены по официального релиза Astro 7. Если версия инструмента изменилась, официальный источник важнее старого скриншота.

Что получится в итоге

Готовый результат проекта: Astro 7 для новичка: собираем быстрый блог-портфолио из Markdown
Так выглядит законченный учебный проект: есть понятный вход, видимый результат, защита от неверных данных и место для следующего улучшения.

Короткие ответы
Зачем коллекции нужна схема?

Она ловит отсутствующие и неверно типизированные поля до того, как страница попадёт пользователю.

Когда создаются страницы статического портфолио?

Во время сборки Astro получает записи и заранее формирует пути и HTML.

Что проверять первым, если Astro 7 не запускается?

Версию среды, текущую папку, команду запуска и первую строку ошибки.

Как понять, что проект Astro 7 работает?

Проверьте основной сценарий, неверный ввод, повторный запуск и один граничный случай.

Можно ли начать с готового кода?

Да. Добейтесь результата, измените одно правило и восстановите ключевую функцию без копирования.

Сделайте один осознанный шаг дальше

Выберите одно улучшение и проведите его от ввода до результата.

Если не хватает основы, перейдите курс HTML, затем восстановите ключевую функцию без подсказки.