Обновить

Широкий вход, узкий выход: Vue 3 внутри jQuery‑формы без бесконечных циклов

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели8.4K
Всего голосов 2: ↑2 и ↓0+4
Комментарии4

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

Как будто слишком сложное решение ради задачи, которую, возможно, можно было решить проще. Не покидает ощущение, что мост получился сложнее самой дороги.

Ощущение справедливое, у меня самого оно было, когда я начинал работу над механизмом.

Сам мост - 57 строк: разобрать имя поля, положить значение в состояние, промолчать, если значение не изменилось. Всё остальное - это предохранители от циклов, и каждый из них появился после того, как цикл уже случился. Поэтому выглядит это довольно просто и разобраться не так сложно, как кажется.

Ещё уточнение, раз уж речь про соотношение цены и результата: под заказ там ничего не захардкожено. Состояние формы лежит в том же реестре, что и состояние обычных Vue 3-страниц, с той же подпиской и тем же трекингом изменений. Разбор имени поля работает с любой Symfony-формой, обратная запись - с любым путём.

Островки сейчас живут на трёх легаси страницах. Заказ был первым и остаётся самым тяжёлым: там легаси-код правит те же поля, что и Vue, поэтому нужен полный двусторонний контур. Механизм один и тот же, просто заказу от него нужно больше всех.

Про "можно было проще" - мне правда интересно, что бы вы сделали. Вводные: страницу переписать нельзя (считали, это год работы против двух месяцев на мост), новые блоки по бизнес-требованию видит только один сегмент клиентов, и часть легаси функционала остаётся хозяином некоторых полей - он продолжает их править, пока Vue рисует своё и работает с другой частью. Если при этих условиях есть решение короче, это будет лучший комментарий, который я мог бы получить =D

Да, всё так. Страница на Symfony + jQuery, ей много лет, она рабочая и никто её не останавливает. Vue 3 монтируется отдельными блоками в размеченные точки внутри неё: форма остаётся легаси и уходит в обычный сабмит, новые куски интерфейса рисует Vue.

Vue 2 из прошлой волны миграции с той же страницы тоже никуда не делся. Три поколения в одном DOM, живут по соседству.

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

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

Публикации