@VolodymyrWork

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

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

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

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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы