@VolodymyrWork

Чем именно виртуальный дом выигрывает в обновлении в сравнение с реальным домом?

Объясните пожалуйста разницу между обновлением обычного дома и виртуального. Насколько я понял виртуальный дом это js объект и если делаются изменения в нём меняется узлы и потом сравнивается с реальным домом и в реальном доме меняются только те узлы которые были изменены. Почему в реальном доме нельзя таким же образом менять только те узлы которые изменились?
Много где читал что изменения в виртуальном доме вызывает изменение всего дом дерева так ли это?
Нашёл статью в которой пишут что виртуальный дом обновляется очень часто а реальный только 60 раз в секунду. То есть виртуальный накапливает изменение но реальный будет обновляться не чаще чем 60 раз в секунду и именно этим он быстрее.
В конечном результате всё-равно виртуальный дом сравнивается с реальным изменяет только некоторые узлы, так почему сразу не сравнивать узлы которые изменились с реальным домом?
Почему обновление реального дома очень затратно И как так получилось что создание новой абстракции в виде виртуального дома сделала его только быстрее?
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 2
Почему в реальном доме нельзя таким же образом менять только те узлы которые изменились?

Если меняешь только 1 узел, разницы практически не будет.
Если меняешь целое дерево - уже сложнее.
Если писать руками, то можно пойти двумя путями:
1. Снести всё (под)дерево в реальном доме, а потом построить новое заново
2. Руками пройтись по дереву в реальном доме и изменить только те узлы, в которых реально поменялись данные.

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

Вот этим virtual DOM и занимается вместо разработчика.

Много где читал что изменения в виртуальном доме вызывает изменение всего дом дерева так ли это?

Это плохой сценарий, если используется что-то неправильно, или если реально надо перестроить всё дерево.

В конечном результате всё-равно виртуальный дом сравнивается с реальным изменяет только некоторые узлы, так почему сразу не сравнивать узлы которые изменились с реальным домом?

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

Почему обновление реального дома очень затратно И как так получилось что создание новой абстракции в виде виртуального дома сделала его только быстрее?

Затратно, тк это обращение к API браузера, которое медленнее, чем просто обратиться к объекту в JS.
А выигрыш из-за того что мало кто хочет самостоятельно писать такую абстракцию для эффективной работы с реальным DOM.
Ответ написан
Комментировать
CIDBerlin
@CIDBerlin
Junior front-end developer
Приветствую. Вот хорошая статья, которая объяснит вам преимущество virtual dom. Что такое Virtual DOM?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы