delphinpro
@delphinpro
frontend developer

Избитый вопрос: как быть с роутингом в связке Laravel+Vue+SSR?

Связка обозначена — Laravel + Vue + SSR.

Ключевая проблема — серверный рендер.
Условие — при первичной загрузке страницы НЕ делать запросы данных для страницы.
Для этого отрабатывает ларкин контроллер и вываливает стейт данных в тело страницы, который потом гидратируется в аппликуху на фронте.

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

Что делать, елки-палки?
  • Вопрос задан
  • 591 просмотр
Решения вопроса 3
Alex_Wells
@Alex_Wells
PHP/Kotlin
Вообще не ясно, причем тут сервер и Laravel, и почему рауты нужно дублировать.

Laravel вообще ничего об SSR знать не должен - этим пусть занимается сервер на ноде. А все, что ему, в свою очередь, нужно сделать - это заполнить VueX (или любой другой стор) нужными данными до рендера страницы. Откуда их брать - решать тебе. Контроль безграничный - загружай какие данные когда хочешь и как хочешь, главное что бы фронт был более-менее нормально написан.
Ответ написан
@kami16ru
В недавно вышедшем Laravel 8 есть SSR из коробки, реализованный при помощи inertia.js, которая решает кроме роутинга и другие проблемы, связанные с SSR.

Так же как вариант, вы можете написать artisan команду, которая будет при сборке проекта создавать json файл. На фронтенде пишете маппер json файла и можете синхронизировать руты с методом "name" маршрутизатора Laravel. Примеры в гугле есть.
Ответ написан
delphinpro
@delphinpro Автор вопроса, куратор тега Laravel
frontend developer
В общем, решение — не заниматься ерундой.
Поднять на VPS express сервер для SPA, а на ларке запилить stateless api.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы