Что думаете о Livewire и Inertia.js?

В последнее время в сообществе Laravel набирает популярность Livewire и Inertia.js как компоненты для генерации фронта на стороне сервера. Вижу очень много статей и туториалов, а в последнем инсталлере Laravel вообще завезли выбор между ними.

Хотел бы почитать опыт тех кто уже использует их в проде. Какие плюсы, минусы, подводные камни? Достаточно ли они стабильны? Как гладко проходит переход на новые версии? Как себя ведут оунеры проектов на гитхабе? и т.д.

P.S. Да я знаю, что монолит это плохо. Да я знаю, что лучше фронт выносить в отдельный проект. В этом вопросе меня интересуют только эти 2 компонента.
  • Вопрос задан
  • 7243 просмотра
Решения вопроса 5
Insolita
@Insolita
Отчаянная домохозяйка
Про inertia почти ничего не скажу. Про livewire - Для mvp, низкобюджетных стартапов, инди-проектов, того что по умолчанию для ограниченной аудитории и не должно быть слишком нагруженным, админок каких-то... вполне себе вариант.
Для более серьёзных вещей и с расчетом на перспективу - я бы оставалась на проверенных технологиях.
Из подводных камней - с технологической стороны - дикое смешение ответственностей. С практической - каждый чих изменения в интерфейсе - та же кнопочка счетчика, смена таба, или еще чего, реализованного без православных скриптов - это запросы на сервер. И еще - серьёзный локинг на этих технологиях, их апдейтах.
А конкретно tailwind мне таки зашёл, если его с умом готовить и выносить наборы в scss. В компании с purgecss на выходе можно получить очень лёгкий css файлик. Но он обязательно в компании с компонентами - блейд, или js -фреймворков (И это, разумеется с позиции бекендера. Если на проекте есть заведующий фронтом - то ему и править балом).
В любом случае я бы посоветовала не полагаться только на мнение других, а покрутить и пощупать всё самому. Как минимум - они на хайпе, и значит есть вероятность что все равно с ними столкнётесь рано или поздно
Ответ написан
Комментировать
Alex_Wells
@Alex_Wells
PHP/Kotlin
... в каком контексте? Быстро собрать МВП - сойдет.

А так - я даже говорить не буду про отсутствие типизации, очевидную сложность поддержки как только нужно будет сделать что-то сложнее базового раутинга, излишне большие пейлоады, Vue.JS как фреймворк...

Двух минут достаточно, что бы понять, что на этом говне ни в коем случае нельзя строить реальный проект. Напоминает мне Laravel и все его суб-проекты (типа Laravel Nova) в целом - вроде все круто и радужно, пока твой проект размером с пару страниц. А как только хочешь больше - начинаешь желать избить Тэйлора и других контрибьюторов.
Ответ написан
Комментировать
agoalofalife
@agoalofalife
Team Lead
И тот и другой инструмент под свой круг задач вполне подходит.
Livewire - как вам ответили выше, хорошо подходит mvp, небольших сайтов, где нет большой нагрузки и грандиозных планов.
Хотя кто-то берет на себя риски и делает все на нем. Из подводных камней, это у вас связаны руки в js, так же на каждое действие, он будет слать запрос на сервер. То есть написали букву в input, запрос на сервер(хотя можно оптимизировать, но тем не менее), в итоге получается такой оверхед на все.
Стоит иметь в виду о смеси ответственностей, точнее livewire будет вас постоянно склонять к этому, так как в классах php у вас постоянно логика фронта.
Еще могут быть не очевидные проблемы, при синхронизации данных, и вам надо будет подставлять задержки.
У меня была проблема с загрузкой файла, в кратце есть две настройки в вашем php.ini и отдельно в файле livewire, в каждом стоит свое максимальное значение размера файла.
Так вот- грузил я картинку по событию change, после загрузки была написана валидация, в кратце файл не грузился и в блок с валидации было пусто.
Проблема заключалось в том, что livewire не как об этом не сообщал и не намекал, просто не грузил файл и валидация не проходила.
Так что будьте готовы решать такие нюансы.
Мой субъективный опыт получился двоякий, с одной стороны мне понравилась скорость, с другой стороны что-то не работает, возможно это временно пока все шишки не набьешь.

С Inertia опыт пока только теоретический, но он уже ближе к нормальному стеку. Просто вам не надо думать о роутинге, api, вывода ошибок.
Врать не буду, ибо фраза:
В теории нет разницы между теорией и практикой. А на практике есть

Поэтому я дополню свой ответ позже - если посчастливиться его попробывать

Вывод
Рекомендую попробовать оба варианта несколько раз, тогда вы составите для себя полноценное мнение об этих инструментах.
Любой продукт который поддерживается и используется сообществом - уже лучше N фреймворка который знаете вы и еще двое людей.
Повторюсь еще раз, имеет место быть, так как для всех копеечных проектов которые живет два понедельника - писать spa - очень дорогое и бессмысленное удовольствие.
Ответ написан
Комментировать
uonick
@uonick
Сгибатель бананов
Вот что сам Тейлор об этом говорит https://www.reddit.com/r/laravel/comments/ip7apa/t...
Ответ написан
@jazzus
Livewire это конечно 100% костыль. Для тех кто не хочет/не умеет с js, но блин как с ним все быстро))
юзал на двух фичах с формами - разработка моментальная. Ни роутов не надо, ни компоновки json, ну и без программирования js. Очень быстро.
От vue конечно отказываться не стоит, но если что-то запилить по быстрому без перезагрузки то можно поиграться.
И у этого костыля даже свои тесты есть))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@SaintJohnny
Может кому-нибудь мой опыт пригодится, страница хорошо ранжируется, значит читают.

Испробовал все технологии.
Даже для среднего проекта типа Интернет-магазин + товарный учет, где уже нужен удобный и отзывчивый интерфейс средствами Laravel (Blade) не обойтись, нужен js.
Начал внедрять Livewire , сначала думал, вот он Грааль, но оказалось такой костыль, и если что-то не так применить, сайт тупил не по-детски. Местами пришлось переписывать в ущерб SOLID, где-то сломалась логика, и если ошибка отследить сложно. А через пару месяцев вообще сложно найти, где что и как работает. С ужасом взглянул на это безобразие и решил на еще не сданном проекте перейти на Inertia (причем, по первой, часть разделов работали на старом интерфейсе Blade + Livewire , остальная на Inertia+Vue)
Единственно где оставил Livewire - это несколько общих компонентов на клиентской части, где Inertia+Vue не применишь, т.к. SEO. Здесь Livewire идеально вписался. На Livewire сделал виджеты - Корзина, Избранное, Поиск, Обратная связь и еще пару.

А админку всю перевел на Inertia на Vue3. Это в принципе тот же Vue, только без роутинга, авторизации laravel и других удобных вещей.
Если пилить проект в одного, то Inertia это лучшее решение, так как ускоряет разработку, чем Laravel + Vue (React)
Единственное нельзя использовать связи моделей как в Blade, т.к. Inertia не передает все данные, надо либо использовать with, либо самому делать конвертацию объектов и связей в массив (JSON).
По мне, лучше самому конвертировать, так больше контроля и если вдруг перейти на чистый Vue3, то переделывать придется мало.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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