Как делается SSR

Всё что касается построения API
Ответить
Аватара пользователя
bemulima
Сообщения: 207
Зарегистрирован: 2012.12.20, 09:41
Откуда: Курган

Как делается SSR

Сообщение bemulima »

Есть yii2 проект со структурой:

Код: Выделить всё

api // Данный момент возвращает данные только для гостя так, как еще не налажен OAuth2 авторизации
backend // Административная часть
common // Общие классы, компоненты
frontend // Есть куча модулей с контроллерами. Action'ы возвращает только пустой HTML <div id="app"></div>, так же есть временные action's, которые возвращают данные для авторизованного пользователя через axios запросов ()
console // консольные работы
За клиентскую часть отвечает react. На данном моменте проект MPA (multiple page application): каждый раз react заново собирается.

Пришло время отделить react от yii2, как отдельное приложение и через REST API общался с сервером. Задача реализовать SSR (Server Site Rendering) для react. Прочитав про него несколько статьей понял (может не верно понял), что даже отделив react от yii2 он никуда не денется от PHP. Всё равно придется сделать роутинг, контроллеры и экшны на серверe, чтоб обрабатывать роуты и каждый экшн через V8js обращается react компоненту с пропсами и возвращает готовый, собранные HTML файл.

Правильно ли я понял, подскажите пожалуйста?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как делается SSR

Сообщение ElisDN »

Как обсуждали в viewtopic.php?p=272373#p272373, сделать отдельную папку для JS-фронтенда, а в Yii оставить только API-контроллеры.

А как SSR-фреймворк на React можно взять готовый NextJS. Он будет дёргать JSON с API и рендерить страницу на сервере и на клиенте.
Аватара пользователя
bemulima
Сообщения: 207
Зарегистрирован: 2012.12.20, 09:41
Откуда: Курган

Re: Как делается SSR

Сообщение bemulima »

ElisDN писал(а): 2021.08.04, 12:00 А как SSR-фреймворк на React можно взять готовый NextJS. Он будет дёргать JSON с API и рендерить страницу на сервере и на клиенте.
Спасибо! Next.js супер решение!
Ответить