Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Режимы отрисовки: SSR, SSG и гибридный

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

Режимы

РежимКогда собирается HTMLПодходит для
SSR, отрисовка на сервереПри каждом запросеСтраницы с часто меняющимися данными
SSG, статическая генерацияОдин раз при сборкеСтраницы, которые редко меняются
CSR, отрисовка в браузереВ браузере после загрузки JavaScriptЗакрытые разделы, которым не нужен поиск
ГибридныйПо-разному для разных адресовБольшинство реальных сайтов

SSR по умолчанию

Ничего настраивать не нужно: так работает каждый урок этого курса. Сервер получает запрос, выполняет компоненты и useFetch, отправляет готовый HTML, а браузер выполняет гидратацию.

Только в браузере

Чтобы весь сайт собирался в браузере, как обычное приложение Vue, отключите SSR:

// nuxt.config.ts
export default defineNuxtConfig({
  ssr: false
})

Сервер будет отдавать пустую страницу со скриптом. Так делают для внутренних инструментов, но для блога это плохо: поисковики хуже видят содержимое.

Гибридный режим: routeRules

Правила для групп адресов задают в routeRules:

// nuxt.config.ts
export default defineNuxtConfig({
  routeRules: {
    '/': { prerender: true },
    '/about': { prerender: true },
    '/posts/**': { swr: 600 },
    '/admin/**': { ssr: false }
  }
})
ПравилоЧто делает
prerender: trueHTML собирается при сборке и отдаётся как файл
swr: 600HTML кешируется на 600 секунд и обновляется в фоне
isr: trueКак кеш, но на платформах, которые это поддерживают, например Vercel и Netlify
ssr: falseСтраница собирается только в браузере
redirect: '/new-url'Перенаправление на другой адрес

Звёздочки ** означают «этот адрес и всё, что под ним». После npm run build главная и «О блоге» будут готовыми файлами, статьи — кешироваться на 10 минут, а /admin — собираться в браузере.

Полностью статический сайт

Команда npm run generate заранее собирает HTML всех страниц, до которых может дойти по ссылкам, и кладёт результат в .output/public/. Такой сайт можно разместить на любом статическом хостинге без Node.js. Но тогда пропадают серверные обработчики: форма добавления статьи работать не будет.

Только в браузере для части страницы

Если отдельный компонент не может работать на сервере, оберните его в <ClientOnly> вместо отключения SSR для всей страницы.

Частая ошибка

Включить prerender: true для страницы, которая зависит от пользователя или часто меняется, например для списка статей. HTML соберётся один раз при сборке, и новые статьи на этой странице не появятся до следующей сборки. Для таких страниц используйте обычный SSR или swr с небольшим временем кеша.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.