если чистый js делает изменения только там, где указано, не обновляя при этом заново старый DOM, в чем разница с виртуальным?
Спроси этот вопрос в группе фреймворка какого-то. То что я знаю, и как понимаю. Что с VDOM ты не следишь за всем, ты меняешь Стейт, и твой шаблон сам перерисуется там где это надо. Если использовать чистый JS то тебе надо знать текущий стейт, знать прошлый стейт, сравнить их, и на основе сравнения уже подменять данные шаблоне.