@DarkGenius
Full stack web developer

Как работает Server Side Rendering?

В современных фронтенд-фреймворках есть возможность рендерить приложение на сервере, чтобы повысить быстродействие. Допустим, для рендеринга представления нужно получить асинхронно данные от бэкэнда.
Как механизм SSR поймет, что нужно ждать завершения всех асинхронных запросов, перед тем как отрендерить контент? Или механизм не будет беспокоиться об этом, а просто соберет HTML-представление согласно дереву компонентов, а запрос данных и их рендер уже ложится на плечи клиентской среды выполнения?
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Сервер - подготавливает разметку HTML, а механизм фронта - просто расставляет готовые блоки, получая их в асинхронном режиме.
includeHTML - так и работает (включая работу с локальными файлами вообще без использования сервера).
Если есть зависимости от блоков - это явно указывается при рендеринге (режим сихронизации).
Ответ написан
rockon404
@rockon404
Frontend Developer
Разные разработчики решают этот вопрос по-разному. Фреймворки лишь предоставляют API для статического рендера, а все архитектурные решения ложатся на плечи разработчиков.

Возможно, вам стоит обратить внимание на готовые решения вроде next и nuxt.
Ответ написан
delphinpro
@delphinpro
frontend developer
Серверный бандл приложения не должен делать никаких асинхронных запросов. Незачем.
Когда запрашивается страница, первично, идет обращение к бэкэнду сайта. Там в модельках-контроллерах делаются запросы в базу, готовятся данные и т.д. Когда все готово, сервер вызывает рендер серверного бандла приложения и передает в него эти готовые данные. Так называемый PRELOAD_STATE/INITIAL_STATE или Предзагрузка состояния. Страница рендерится в html и выплевывается в браузер. В браузере (первичный запрос, мы помним, да?) вступает в действие механизм гидратации — превращение полученной статической разметки в динамический DOM.

Страница готова к использованию без асинхронных запросов. Потом уже, при переходах по страницам фронт делает асинхронные запросы за актуальными данными.

Чтобы серверный бандл не делал никаких запросов, они должны вызываться не при создании компонента, а при его монтировании (не created, но mounted, если говорить о Vue), т.к. хуки монтирования не вызываются в серверной среде.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы