Rendering

Что это такое

Рендеринг — процесс отрисовки DOM на экране браузера. Браузер берет DOM (дерево элементов) и CSSOM (дерево стилей), рассчитывает как элементы должны быть расположены и отрисовывает цвета по пикселям на экран

В React под рендерингом понимают вычисление того, как должен выглядеть DOM (по сути, те значения, что возвращают наши React-компоненты как функции)

Подходы к рендерингу

Есть несколько подходов к рендерингу

  • CSR — Client Side Rendering — это отрисовка всех компонентов на стороне клиента (браузера), например, как это происходит в SPA (single-page application)

    • SPA — подгружается одна HTML страница, которая обновляется в процессе взаимодействия с пользователем. SPA легче разрабатывать, но такие приложения дольше грузятся

    • В React CSR означает, что наши компоненты как функции будут выполняться на стороне браузера

  • SSR — Streaming Server-side Rendering — формируем страницу целиком на сервер и отправляем клиенту для отрисовки. Скорость отрисовки такого приложения высокая, однако разрабатывать такое SPA приложение сильно сложнее

  • SSG — Static Site Generation — на этапе сборки приложения получаем статический сайт и отрисовываем его на клиенте. Скорость отрисовки такого приложения высокая, однако добавлять сюда SSR функции крайне сложно

  • RSC — React Server Components — комбинированный подход к рендерингу React приложений. Какие-то части html собираются на этапе сборки, другие на сервере, третьи — на стороне клиента рендерятся и все собирается в единое дерево React. RSC может увеличить производительность сайта, но требует от разработчика глубокой экспертизы и навыков

RSC

В этой статье здорово описано как это работает: https://tonyalicea.dev/blog/understanding-react-server-components/

Формат сериализации называется Flight. Пересылаемые данные — RSC Payload'ы.

Парсинг RSC Payload'ов: https://github.com/alvarlagerlof/rsc-parser/tree/main

Last updated