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

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

Я пробовал что-то похожее в Laravel, там это называется LiveWire. Пришел к выводу, что это порождает больше проблем, чем решает.

Ага, для простых ситуация типа фидбек-формы или вакансий LiviWire хорош, но вот для полноценного SPA он, конечно, вряд ли подойдёт

Непонятно зачем data: { turbo: true} ?
Во-первых, форма и так внутри труба-фрейма, а во-вторых, post запрос должен автоматически обрабатываться в контроллере как turbo (при наличии формата).
Хотя, по моему мнению, использование турбо-фрейма для сложной логики не очень удобно. Проще повесить Stimulus контроллер на необходимое действие, в том числе на get запрос, перехватить click (select, change), сформировать правильный запрос на сервер (путь, метод, заголовок) и асихнхронно получить ответ с последующим рендером хоть в скрипте, хоть в erb. Удобно это еще и тем что можно сформировать необходимый href, например типа
/products/maker_nike_or_adidas/from_100/to_3000/sort_newest/page=2

Впрочем, в несложных случаях можно перехватить стандартное поведение турбо-фрейма, примешивая, изменяя, практически на лету, формат запроса.

Основная недостаток автоматического алгоритма работы турбо фрейма проявляется когда необходимо обновить что-то вне этого турбо фрейма (счетчики, кнопки, списки). Решение типа добавления атрибута target="_top" приводит к перезагрузке всего окна, что слегка противоречит принципу обновления компонентов. Как вариант, цеплять дополнительные turbo_stream на внешние изменения счетчиков, кнопок. Особенно этот вариант хорош если есть необходимость фоновых вычислений, которые могут затянуть выдачу ответа сервера.

В любом случае, спасибо за статью.

Какое именно использованное решение не позволило перейти на Vue 3, даже при том, что существует vue/compact? Проблема явно не во времени я так понимаю была, а в чем же?

HTMX проще, и позволяет тот же чат сделать на своих компонентах. У них ещё и Hyperscript есть, изумительный язык.

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