Виртуальный дом. Костыль от которого пора отказаться

#web
#frontend
#vue
#dom
#vdom

Виртуальный DOM (VDOM) больше не нужен. Веб не стоит на месте, как и браузеры. До сих пор вижу людей, которые считают его чем то крутым и актуальным, не вникая, что это вообще такое и зачем оно нужно.

Это оверхед

Чтобы понять, почему это стало оверхедом, давайте вернемся в прошлое, где данный оверхед был полезным хаком.

Все мы помним, что дергать DOM дерево это "дорогая" операция, которая требует ререндеринга/перерасчета того что видит юзер. Главная идея была в том, что бы минимизировать количество операций с DOM.

Делалось это так: создаем копию DOM в памяти (виртуальный DOM), вычисляем разницу (diff) между текущим и новым состоянием, а затем применяем только необходимые изменения, + эти изменения группируются и выполняются за один раз (батчинг).

Звучит круто? если вы застряли в прошлом, то "да", а сейчас это дикий оверхед, особенно когда DOM очень большой, не забываем что мы создаем полную копию DOM в памяти, и причем не одну, а две, что бы потом искать diff, что тоже занимает время.

Браузеры стали круче

Браузеры не стоят на месте, напрмяую обновить DOM проще и не требует таких затрат как это было 10-15 лет назад. Ваш браузер давно научился делать это опмитизированно, да и железо сейчас другое, а мы поверх этих оптимизаций до сих пор совершаем этот танец вокруг VDOM.

Если вы и вправду считаете что ваш танец на js быстрее чем c/c++, то вы сильно ошибаетесь. Вы просто заставляете браузер делать кучу других операций, вместо того что бы просто пойти и обновить DOM.

Взгляните на Svelte, Solid, Angular, у них нет VDOM, они и без него могут обновлять только нужные части ui. Скоро и Vue вступит в их клуб убрав этот ненужный оверхед со своего фреймворка (привет Vue Vapor).

Немного про Vue Vapor

Это вариант Vue, который предлагает рендеринг без VDOM.

Они давно смерджили Vapor с репой Vue и судья по коммитам, видно что активно над ним работают. В ближайшем будущем, они выкинут VDOM.

Результаты сами за себя говорят:

Vue Vapor test results

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