Задать вопрос
@VolodymyrWork

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

Объясните пожалуйста разницу между обновлением обычного дома и виртуального. Насколько я понял виртуальный дом это js объект и если делаются изменения в нём меняется узлы и потом сравнивается с реальным домом и в реальном доме меняются только те узлы которые были изменены. Почему в реальном доме нельзя таким же образом менять только те узлы которые изменились?
Много где читал что изменения в виртуальном доме вызывает изменение всего дом дерева так ли это?
Нашёл статью в которой пишут что виртуальный дом обновляется очень часто а реальный только 60 раз в секунду. То есть виртуальный накапливает изменение но реальный будет обновляться не чаще чем 60 раз в секунду и именно этим он быстрее.
В конечном результате всё-равно виртуальный дом сравнивается с реальным изменяет только некоторые узлы, так почему сразу не сравнивать узлы которые изменились с реальным домом?
Почему обновление реального дома очень затратно И как так получилось что создание новой абстракции в виде виртуального дома сделала его только быстрее?
  • Вопрос задан
  • 229 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Merion Academy
    Frontend-разработка на React
    4 месяца
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
Пригласить эксперта
Ответы на вопрос 2
Почему в реальном доме нельзя таким же образом менять только те узлы которые изменились?

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

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

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

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

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

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

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

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

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

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽