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

Режимы Рендеринга

Для отображения в Интернете код вашего проекта Astro должен быть отрендерен в HTML.

Страницы Astro, маршруты и конечные точки API могут быть либо предварительно отрендерены на этапе сборки, либо отрендерены сервером при запросе пути. С Островами Astro вы также можете включить рендеринг на стороне клиента, если это необходимо.

В Astro большая часть обработки происходит на сервере, а не в браузере. Это обычно делает ваш сайт или приложение быстрее при просмотре на менее мощных устройствах или при медленном интернет-соединении, чем рендеринг на стороне клиента. Серверный рендеринг HTML быстр, SEO-дружелюбен и доступен по умолчанию.

В конфигурации output (EN) вы можете настроить, как будут отображаться ваши страницы.

По умолчанию используется режим рендеринга output: 'static', который создает HTML для всех маршрутов вашей страницы на этапе сборки.

В этом режиме весь ваш сайт будет предварительно отрендерен, и сервер создаст все страницы заранее и подготовит их к отправке в браузер. Один и тот же HTML-документ отправляется в браузер для каждого посетителя, и для обновления содержимого страницы требуется полная пересборка сайта. Этот метод также известен как статическая генерация сайта (SSG).

По умолчанию все проекты Astro настроены на предварительный рендеринг на этапе сборки (статическое генерирование), чтобы обеспечить наиболее легкую работу браузера. Браузеру не нужно ждать, пока соберется HTML, потому что серверу не нужно генерировать страницы по запросу. Ваш сайт не зависит от производительности источника данных на бэкэнде, и после создания остается доступным для посетителей в виде статического сайта до тех пор, пока функционирует ваш сервер.

Статические сайты могут включать Острова Astro для интерактивных компонентов пользовательского интерфейса(UI) (или даже целых встроенных приложений с рендерингом на стороне клиента!), написанных на UI фреймворке по вашему выбору (EN) на статичной, предварительно отрендеренной странице.

API анимации переходов Astro также доступен в режиме static для анимации и сохранения состояния при навигации по страницам. Статические сайты также могут использовать промежуточное ПО для перехвата и преобразования данных ответа на запрос.

Два других режима вывода Astro могут быть настроены для рендеринга по запросу некоторых или всех ваших страниц, маршрутов или конечных точек API:

  • output: 'server' для высокодинамичных сайтов с большинством или всеми маршрутами по запросу.
  • output: 'hybrid' для преимущественно статичных сайтов с некоторыми маршрутами по запросу.

Поскольку они генерируются при каждом посещении, эти маршруты могут быть настроены индивидуально для каждого пользователя. Например, страница, созданная по запросу, может показать вошедшему пользователю его учётные данные или отобразить свежие данные без необходимости полной пересборки всего сайта. Рендеринг по запросу на сервере во время обращения к нему также известен как рендеринг на стороне сервера (SSR).

Рассмотрите возможность включения режима server или hybrid (EN) в вашем проекте Astro, если вам нужно следующее:

  • Конечные точки API: Создание конкретных страниц, которые функционируют как конечные точки API для таких задач, как доступ к базе данных, аутентификация и авторизация, при этом скрывая конфиденциальные данные от клиента.

  • Защищенные страницы: Ограничьте доступ к странице на основе прав пользователя, обрабатывая доступ пользователей на сервере.

  • Часто изменяемый контент: Генерируйте отдельные страницы без необходимости статической пересборки сайта. Это полезно, когда содержимое страницы часто обновляется, например, для отображения данных из API, вызываемых динамически с помощью fetch().

Оба режима server и hybrid позволяют включать острова Astro для интерактивности (или даже целые встроенные приложения с рендерингом на стороне клиента!) в выбранные вами UI-фреймворки (EN). Высокоинтерактивные приложения возможны с промежуточным ПО и API анимации переходов Astro для анимации и сохранения состояния при навигации по маршрутам.

Внести свой вклад

Что у вас на уме?

Сообщество