Как стать автором
Обновить

Комментарии 5

Мне всё равно кажется, что изучить vue проще, чем livewire

В данном случае автопроверки, как я понял, автоматом прикручиваются к странице. А на vue их придется прикреплять руками.

Есть и иные мнения, например здесь. Разработчик, наоборот, перенёс свои два рабочих проекта с Vue на Livewire, не потеряв ничего из того, что было нужно клиентам, при этом значительно упростив и ускорив тестирование.

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

Один из недавних проектов начинал писать с использованием Livewire.

Столкнулся со следующими проблемами:

  1. Скорость работы клиента всегда будет зависеть от того, как быстро обработает сервер изменение состояния, то есть поднимет всё окружение Laravel и выдаст ответ;

  2. Каждое обновление компонента полностью перерендеривает весь компонент, включая дочерние. Например, если используется какой-нибудь select2, то его заново необходимо будет инициализировать (это есть и в JS веб-фреймворках, но там доступнее описать на каком этапе нужно заново отрисовать компонент из библиотеки) + влияет на размер ответа от сервера;

  3. При необходимости произвести какую-либо манипуляцию на стороне клиента за рамками livewire (например, запросить доступ к камере и обрабатывать поток данных с неё) есть несколько вариантов:
    3.1. Написать на alpine.js (не самый удобный способ, как по мне);
    3.2. Написать на JS обработку события, которое было вызвано из js/livewire;
    3.3. Отправить код из компонента livewire с помощью $this -> js() .

  4. Обработка livewire-событий. Если правильно помню, то сначала событие уходит на сервер и ожидает своего ответа, а потом уже вызывает обработчики на стороне клиента, что вызывало проблемы с тем, когда необходимо было обработать в противоположно порядке

Если всё-таки хочется совместить клиент с Laravel, то предлагаю посмотреть в сторону inertia.js, которая позволяет рендерить приложения на react/vue/svelte без необходимости построения роутинга на клиенте и обработки авторизации через sanctum, например.

Более удачное решение в виде построения логики на сервере, как по мне, получилось у Blazor за счёт использования вебсокетов для обмена информации и WebAssembly, особенно с недавнем выходом .Net 8, где добавили возможность подгружать WebAssembly компоненты в фоне, пока у клиента грузится статика.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории