Все:
Я новичок в React.js, много слышал о виртуальном домене React, но мне интересно, в чем основное различие между ним и реальной DOM, когда речь идет о простом случае, таком как изменение стиля элемента:
Скажем, я хочу изменить расстояние от div до других, я могу использовать jQuery для:
$("div#test").css("margin-left","10px");
И я понимаю, как браузер работает с реальным домом:
- выполните поиск по дереву DOM и найдите этот узел.
- обновление в соответствии с атрибутом стиля (я думаю, это дерево CSSOM)
- рендеринг представления
Итак, мой вопрос:
- Я правильно понимаю?
- Если это в основном правильно, то что делает виртуальная модель DOM для повышения производительности? Разве он не просто использует алгоритм сравнения, чтобы сравнить, что нужно обновить в его облегченной версии DOM-дерева, и обнаружить, что левый край нуждается в обновлении, и применить то же самое, что и в jquery, к реальной DOM?
ИЛИ
- если это неверно, может ли кто-нибудь рассказать немного подробнее о том, какую тяжелую работу выполняет браузер с реальной DOM, которую React virtual DOM пропускает для повышения производительности?
Я нахожу сообщение, в котором упоминаются 3 подробные операции с виртуальной DOM:
Что делает его действительно быстрым:
- Эффективные алгоритмы сравнения.
- Пакетные операции чтения / записи DOM.
- Эффективное обновление только поддерева.
По сравнению с этим, означает ли это в реальной DOM:
- Не совсем эффективный алгоритм сравнения или нет алгоритма сравнения (просто обновите все)?
- Одна операция чтения / записи, например, если я дам 3 обновления стиля даже для одного и того же элемента DOM, браузер будет искать этот элемент в дереве DOM 3 раза и обновлять стиль?
- Обновите всю DOM из корня (в основном, как выгрузить текущее дерево и заново построить все дерево DOM, независимо от того, какая часть дерева нуждается в обновлении, и найдите узел и обновите)
Спасибо