ДокументацияРежимы

Рендеринг

Рендеринг отвечает на один вопрос: кто создаёт HTML и когда. У Nexy есть четыре ответа и один по умолчанию.

Не уверен? Сохраняйте SSR. Изменяйте страницу только тогда, когда вы можете назвать причину: контент, который редко меняется (ISR), один виджет, которому нужен браузер (остров), или навигация, подобная приложению (CSR).

Как это работает

Кто создает HTML и когда
SSRrequestserver rendersHTMLbrowser
ISRrequestcached HTML?browser, regenerated in the background
CSRrequestdocument rendered by the serverbrowser takes over navigation
Islandsrequestserver renders the pageone widget hydrates on demand

Четыре режима

ССР ISR КСО Острова
Данные читаются по каждому запросу при каждой регенерации в браузере по каждому запросу
HTML взят из сервер сервер, затем кэш сервер для первого документа, браузер потом сервер
JavaScript только для островов только для островов пакет фреймворка только остров
Увлажнение нет нет весь документ остров
Кэш нет за URL, в памяти нет нет
Решено по умолчанию revalidate = N на странице useCSR = True в проекте directive на компоненте
Зерно страница страница проект компонент

Жизненный цикл рендеринга

Два факта объясняют большинство сюрпризов.

  1. Проект находится в одном режиме. useCSR выбирает между режимом сервера (SSR, ISR, острова, маршруты .nexy, .md, .mdx) и режимом клиента (маршруты инфраструктуры и клиентский маршрутизатор). Их нельзя смешивать: см. режим сервера и режим клиента.
  2. В режиме сервера режим постраничный. Одна страница может быть кэширована с помощью revalidate, другая может содержать остров, третья не может ни того, ни другого.

Клиентский режим по-прежнему отправляет реальный документ: Nexy отображает его в Node для первого ответа, затем браузер берет на себя навигацию. Страница CSR — это не пустая страница, ожидающая пакета.

Когда использовать

  • Контент, маркетинг, документация: SSR плюс ISR, когда контент меняется редко.
  • В основном статичная страница с одним интерактивным виджетом: SSR с островом.
  • Панели мониторинга, редакторы, навигация в стиле приложений: CSR.
  • Страница читается постоянно и редко меняется: ISR.

Конфигурация

Режим Где
ССР нигде: это значение по умолчанию
ISR revalidate = 60 в заглавной части страницы .nexy
КСО useCSR = True в nexyconfig.py, с установленным useFF
Острова directive="client:visible" в теге компонента

Пример

src/маршруты/блог/index.nexy
---revalidate = 60---<h1>Rendered at most once per minute</h1>

Та же страница без титульной строки — SSR.

src/apps/sales_view.nexy
---from "@/components/Chart.tsx" import Chart---<h1>Rendered on every request</h1><Chart directive="client:visible" />

Представление — SSR, а диаграмма — это остров, который увлажняется при прокрутке в поле зрения.

Ограничения

  • Режим SSG отсутствует. Nexy предварительно отображает HTML во время сборки (HTML компонента, клиентские документы), но всегда считывает его обратно через сервер: нет команды экспорта, нет отдельной папки для статического размещения. Для замороженного контента используйте ISR с длинным окном.
  • ISR не является CDN. Кэш находится в процессе рендеринга страницы; несколько рабочих хранят несколько тайников. См. ISR.
  • CSR — это проектное решение. Вы не можете создать CSR одной страницы и сохранить SSR остальных.
  • Острова увлажняют остров, а не страницу. Страница, все острова которой зависят друг от друга, является замаскированной страницей CSR.

Следующие шаги

Изменить на GitHub

Enter открывает результат, Esc закрывает.