Возможна ли подобная логика при работе с virtual dom?
Хотелось бы услышать совет, возможно ли реализовать такую логику с библиотеками для virtual dom и какую библиотеку можно использовать?
1) Имеем html страницу с произвольным контентом.
2) С сервера получаем html отдельной части страницы.
3) Парсим этот html с помощью библиотеки и создаем его virtual dom.
4) Создаем virtual dom для аналогичной части на странице.
4) Через библиотеку вычисляем разницу и применяем патч.
Я прекрасно понимаю, что в этой ситуации больше подходит обмен с сервером одними данными и создание html на клиенте через любую MVVM библиотеку, но изначально страница отдается сервером в готовом виде, а затем периодически с сервера приходит готовый html одной части. Вставка блока целиком вместо старого, как сделано сейчас, конечно же работает, но вызывает ряд побочных эффектов, борьба с которыми тоже представляет те ещё костыли (например самое простое - это сохранение фокуса, а самое сложное повторная инициализация джаваскриптов, которые повторно могут изменить другие части страницы).
Если кто-то натолкнет на другое решение, буду признателен.
Вы знаете толк в извращениях.
Может быть можно как-то локализовать этот участок "постоянно меняющегося дома" и реализовать его при помощи любой MVVM библиотеки? Имхо - это будет самый экономичный в плане поддержки вариант.
Прекрасно понимаю, что извращение, о чём и написал, и сам бы так и сделал (MVVM + json для данных с сервера), контролируй бы я все части проекта.
Сейчас потестирую варианты с virtual dom, если проблем будет больше, чем пользы, то пойду по пути MVVM, но тогда надо будет делать костыли уже на стороне севера, чтобы компоненты не рендерились по своим шаблонам, а отдавали чисто данные, а их шаблоны переносить на сторону клиента.
Потому что "мой" компонент на стороне сервера содержит N дочерних компонентов и выдаёт общий html, и все эти дочерние компоненты для меня "чёрные" ящики, не стоит их переписывать, потому что потеряется возможность их обновления, да у них своя логика, они могут иметь собственный джаваскрипт, который они подключают в блок скриптов всей страницы. И простое обновление этих компонентов убьёт всю мою логику. То есть моя задача пока что выбрать меньшее из всех зол... Поэтому и вспомнил про virtual dom