Astro: output hybrid и prerender
Настройка режима рендеринга: static, server, hybrid. Пример hybrid с adapter и выборочным prerender = false для страницы.
Как использовать
- Скопируйте нужный фрагмент кода.
- Вставьте в свой проект и при необходимости измените под задачу.
- Проверьте зависимости и окружение (версии, переменные).
Astro поддерживает три режима: static (по умолчанию), server (всё on-demand), hybrid (по умолчанию SSG, отдельные страницы — SSR через prerender = false). Для server и hybrid нужен adapter.
Режим Hybrid (On-demand rendering):
// astro.config.mjs
import { defineConfig } from "astro/config";
import node from "@astrojs/node";
export default defineConfig({
output: "hybrid",
adapter: node(),
});
Страница с SSR (рендер по запросу):
---
// src/pages/dashboard.astro
export const prerender = false;
---
<h1>Динамический контент: {new Date().toLocaleString()}</h1>
Режим полностью статический (без adapter):
// astro.config.mjs
import { defineConfig } from "astro/config";
export default defineConfig({
output: "static", // можно не указывать — значение по умолчанию
});
Режим полностью серверный:
// astro.config.mjs
import { defineConfig } from "astro/config";
import node from "@astrojs/node";
export default defineConfig({
output: "server",
adapter: node({ mode: "standalone" }),
});
Usage:
- static — все страницы генерируются при
build, подходит для блогов и лендингов. - server — все страницы и endpoints рендерятся по запросу; нужен хостинг с Node или адаптер (Netlify, Vercel и т.д.).
- hybrid — большинство страниц статически, для нужных страниц в frontmatter укажи
export const prerender = false.
Notes:
⚠️ При output: "hybrid" или "server" обязательно укажи adapter в конфиге. Для вызова Actions из HTML-формы страница должна быть on-demand (prerender = false или режим server).