Контекст рендеринга Astro
При рендеринге страницы Astro предоставляет API времени выполнения, специфичное для текущего процесса. Это включает полезную информацию, такую как URL текущей страницы, а также функции для выполнения действий, например перенаправления.
В компонентах .astro этот контекст доступен через глобальный объект Astro. Функции эндпойнтов также вызываются с этим объектом контекста в качестве первого аргумента.
Объект контекста
Заголовок раздела «Объект контекста»Следующие свойства доступны в глобальном объекте Astro (например, Astro.props, Astro.redirect()) и в объекте контекста, передаваемом в эндпойнты и мидлвары.
props — это объект, содержащий значения, переданные как атрибуты компонента.
---const { title, date } = Astro.props;---<h1>{title}</h1><p>{date}</p>params — это объект, содержащий значения динамических сегментов маршрута. Ключи должны совпадать с параметрами в пути к файлу.
---const { id } = Astro.params;---<h1>Пост №{id}</h1>url — это объект URL, созданный на основе текущего запроса. Удобен для получения пути (pathname) или домена (origin).
<p>Текущий путь: {Astro.url.pathname}</p>site возвращает URL, настроенный в параметре site вашего конфига Astro.
clientAddress
Заголовок раздела «clientAddress»Указывает IP-адрес запроса. Доступно только для страниц, рендерящихся по запросу (on-demand).
generator
Заголовок раздела «generator»Возвращает текущую версию Astro (например, "Astro v5.0.0"). Полезно для добавления мета-тега:
<meta name="generator" content={Astro.generator} />.
request
Заголовок раздела «request»Стандартный объект Request. Позволяет получить заголовки, метод и тело запроса.
response
Заголовок раздела «response»Объект для настройки ответа. Позволяет задать статус или заголовки:
---Astro.response.status = 404;Astro.response.headers.set('Set-Cookie', 'foo=bar');---redirect()
Заголовок раздела «redirect()»Позволяет перенаправить пользователя на другую страницу.
---if (!isLoggedIn) return Astro.redirect('/login');---rewrite()
Заголовок раздела «rewrite()» Добавлено в: astro@4.13.0
Позволяет отобразить контент по другому пути без изменения URL в браузере.
---return Astro.rewrite("/login");---Объект для хранения произвольной информации в рамках одного запроса, передаваемый из мидлваров.
---const user = Astro.locals.user;---cookies
Заголовок раздела «cookies»Утилиты для работы с куками (чтение, запись, удаление).
---const sessionId = Astro.cookies.get('session-id')?.value;Astro.cookies.set('visited', 'true');---