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

Astro Container API (экспериментально)

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

Container API позволяет рендерить компоненты Astro в изоляции.

Этот экспериментальный API на стороне сервера открывает множество возможностей для будущего использования, но в настоящее время его основная область применения — тестирование вывода компонентов .astro в средах vite, таких как vitest.

Он также позволяет вручную загружать скрипты рендеринга для использования в сторонних средах (например, внутри приложений на PHP или Elixir) вне экосистемы vite.

Этот API позволяет создать новый контейнер, и отрендерить компонент Astro, получив на выходе строку или объект Response.

Создает новый экземпляр контейнера.

import { experimental_AstroContainer } from "astro/container";
const container = await experimental_AstroContainer.create();

Рендерит компонент внутри контейнера и возвращает строку с 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);

Аналогичен renderToString, но возвращает стандартный объект Response.

const response = await container.renderToResponse(Card);

Методы рендеринга принимают второй аргумент с дополнительными данными:

  • slots: для передачи контента в конкретные слоты.
  • props: для передачи входных параметров компоненту.
  • request: объект Request для симуляции конкретного URL или заголовков.
  • params: значения для динамических маршрутов.
  • locals: данные из мидлваров.

Пример теста со слотами:

const result = await container.renderToString(Card, {
slots: { default: "Контент карточки" }
});