В настоящее время я работаю над проектом с использованием Laravel и нахожусь на этапе интеграции Vue.js. Я заметил, что существуют различные способы реализации Vue в проекте Laravel, двумя основными вариантами являются Inertia.js и Laravel UI.
Inertia.js кажется привлекательным решением, поскольку оно облегчает создание приложений с рендерингом на стороне сервера (SSR) и с помощью таких пакетов, как Breeze или Jetstream, позволяет быстро выполнить первоначальную настройку проекта. С другой стороны, пользовательский интерфейс Laravel также предлагает встроенный уровень аутентификации вместе с первоначальной настройкой для работы с Vue. Я склоняюсь к пользовательскому интерфейсу Laravel, поскольку знаком с ним с первых дней внедрения Vue в приложениях Laravel с использованием CDN. Мне нравится, как компоненты Vue можно вызывать без исчезновения блейдов при использовании приложения, сохраняя при этом знакомство со структурой Laravel.
Однако я хотел бы услышать опыт и рекомендации сообщества относительно того, какой из этих двух вариантов (или любых других альтернатив) они считают более эффективным, интуитивно понятным и адаптируемым в долгосрочной перспективе. Какие аспекты следует учитывать при выборе между Inertia.js и пользовательским интерфейсом Laravel с точки зрения производительности, удобства обслуживания и масштабируемости? Я ценю любые советы или точки зрения, которые вы можете предложить, чтобы помочь мне принять обоснованное решение.






На мой взгляд, если вы использовали laravel вместе с vue, а затем обходили основные компоненты с помощью блейд-представлений, Inertia предлагает удобный способ справиться с этим. Он также управляет рендерингом, но, AFAIK, Inertia не является рендерингом на стороне сервера «из коробки», для этого вам необходимо применить определенные конфигурации. Когда вы смотрите на ответ (полученный с помощью составного объекта useForm), он возвращает структурированные данные, необходимые для фактической визуализации компонента, с информацией, передаваемой в свойствах, что обеспечивает удобство взаимодействия с пользователем. Однако вам необходимо использовать его, поскольку его можно комбинировать с чистыми запросами ajax. Например, предположим, что у вас есть постраничная сетка с пользователями и раскрывающийся список в качестве фильтра для имени. Каждый раз, когда вы переходите на новую страницу в сетке, вызов этого раскрывающегося списка может быть инициирован снова. Конечно, классическим способом этот вызов тоже был бы выполнен, но не как вызов ajax, а включен в первый html-ответ. На мой взгляд, он предлагает больше способов оптимизации вашего приложения. Если вы уже используете vue с laravel, я не понимаю, почему вы не можете сразу реализовать инерцию.
Если производительность действительно важна, вы можете захотеть иметь отдельные приложения, по крайней мере, интерфейсное и серверное, и посмотреть, какие из ваших сервисов используются наиболее часто. Затем вы можете реализовать, например, стратегии кэширования, сводные таблицы, оптимизацию запросов и т. д.
Определенно, выбор между тем или иным фреймворком не должен быть единственным, о чем стоит беспокоиться. Вам необходимо иметь информацию о том, сколько пользователей вы ожидаете, насколько близко они находятся к вашему серверу, как структурированы ваши данные. В большинстве случаев избежание проблем N+1 и хорошая реализация кэша помогут добиться цели, а благодаря облаку вы можете вертикально масштабироваться, пока не найдете лучшее решение ваших проблем с производительностью.