Перейти к содержимому

Контекст рендеринга Astro

При рендеринге страницы Astro предоставляет API времени выполнения, специфичное для текущего процесса. Это включает полезную информацию, такую как URL текущей страницы, а также функции для выполнения действий, например перенаправления.

В компонентах .astro этот контекст доступен через глобальный объект Astro. Функции эндпойнтов также вызываются с этим объектом контекста в качестве первого аргумента.

Следующие свойства доступны в глобальном объекте Astro (например, Astro.props, Astro.redirect()) и в объекте контекста, передаваемом в эндпойнты и мидлвары.

props — это объект, содержащий значения, переданные как атрибуты компонента.

src/components/Heading.astro
---
const { title, date } = Astro.props;
---
<h1>{title}</h1>
<p>{date}</p>

params — это объект, содержащий значения динамических сегментов маршрута. Ключи должны совпадать с параметрами в пути к файлу.

src/pages/posts/[id].astro
---
const { id } = Astro.params;
---
<h1>Пост №{id}</h1>

url — это объект URL, созданный на основе текущего запроса. Удобен для получения пути (pathname) или домена (origin).

<p>Текущий путь: {Astro.url.pathname}</p>

site возвращает URL, настроенный в параметре site вашего конфига Astro.

Указывает IP-адрес запроса. Доступно только для страниц, рендерящихся по запросу (on-demand).

Возвращает текущую версию Astro (например, "Astro v5.0.0"). Полезно для добавления мета-тега: <meta name="generator" content={Astro.generator} />.

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

Объект для настройки ответа. Позволяет задать статус или заголовки:

---
Astro.response.status = 404;
Astro.response.headers.set('Set-Cookie', 'foo=bar');
---

Позволяет перенаправить пользователя на другую страницу.

---
if (!isLoggedIn) return Astro.redirect('/login');
---

Добавлено в: astro@4.13.0

Позволяет отобразить контент по другому пути без изменения URL в браузере.

---
return Astro.rewrite("/login");
---

Объект для хранения произвольной информации в рамках одного запроса, передаваемый из мидлваров.

---
const user = Astro.locals.user;
---

Утилиты для работы с куками (чтение, запись, удаление).

---
const sessionId = Astro.cookies.get('session-id')?.value;
Astro.cookies.set('visited', 'true');
---