Astro Container API (экспериментально)
Добавлено в: astro@4.9.0
Container API позволяет рендерить компоненты Astro в изоляции.
Этот экспериментальный API на стороне сервера открывает множество возможностей для будущего использования, но в настоящее время его основная область применения — тестирование вывода компонентов .astro в средах vite, таких как vitest.
Он также позволяет вручную загружать скрипты рендеринга для использования в сторонних средах (например, внутри приложений на PHP или Elixir) вне экосистемы vite.
Этот API позволяет создать новый контейнер, и отрендерить компонент Astro, получив на выходе строку или объект Response.
Этот API является экспериментальным и может претерпеть изменения даже в минорных обновлениях. Актуальную информацию всегда можно найти в чейнджлоге проекта.
create()
Заголовок раздела «create()»Создает новый экземпляр контейнера.
import { experimental_AstroContainer } from "astro/container";
const container = await experimental_AstroContainer.create();renderToString()
Заголовок раздела «renderToString()»Рендерит компонент внутри контейнера и возвращает строку с HTML-кодом.
import { experimental_AstroContainer } from "astro/container";import Card from "../src/components/Card.astro";
const container = await experimental_AstroContainer.create();const result = await container.renderToString(Card);renderToResponse()
Заголовок раздела «renderToResponse()»Аналогичен renderToString, но возвращает стандартный объект Response.
const response = await container.renderToResponse(Card);Опции рендеринга
Заголовок раздела «Опции рендеринга»Методы рендеринга принимают второй аргумент с дополнительными данными:
slots: для передачи контента в конкретные слоты.props: для передачи входных параметров компоненту.request: объектRequestдля симуляции конкретного URL или заголовков.params: значения для динамических маршрутов.locals: данные из мидлваров.
Пример теста со слотами:
const result = await container.renderToString(Card, { slots: { default: "Контент карточки" }});