Прочитав документацию и несколько статей о ReactJS и фазах обнаружения и рендеринга изменений в Angular (не AngularJS), я пришел к вопросу, который постараюсь объяснить через несколько минут.
Как вы, вероятно, читали в документах React ( здесь и здесь ), существует такая концепция (если хотите), которая называется " Reconciliation ", которая в основном относится к « Алгоритму отклонения » и процессу, который выполняется после вызова методов « render » и создания деревьев элементов React, и DOM должны быть соответственно обновлены ... Как сказано в их документах, React реализует эвристический алгоритм O (n), который сравнивает новую версию виртуального DOM (VDOM) с предыдущей, чтобы эффективно обновлять только те части вид, который действительно изменился.
Но если говорить об Angular, то, как я читал в некоторых статьях, таких как здесь , здесь и здесь , похоже, что Angular с другой стороны, смотрит только на " bindings ", которые он извлекает из шаблонов:
Когда компилятор анализирует шаблон, он определяет свойства
компонент, связанный с элементами DOM. Для каждого такого
ассоциация, компилятор создает привязку в виде
инструкции. Привязка является основной частью обнаружения изменений в
Угловой.
и затем:
После создания привязок Angular больше не работает с шаблоном.
Механизм обнаружения изменений выполняет инструкции, которые обрабатывают
привязок. Работа этих инструкций состоит в том, чтобы проверить, является ли значение
выражение со свойством компонента изменилось и выполнить DOM
обновляет при необходимости.
, чтобы обернуть это:
Обработка привязок, которые выполняют грязные проверки и обновляют соответствующие
Части DOM являются основными операциями обнаружения изменений в
Угловой.
(из третьей ссылки)
Таким образом, мой вопрос, можем ли мы сказать, что Angular достигает такого же повышения производительности, что и React, когда он запускает обнаружение изменений исключительно на « bindings » вместо всего нового сгенерированного шаблона / VDOM, таким образом устраняя нужен оптимизированный алгоритм сравнения?
Или есть какой-то другой момент в обнаружении изменений Angular, который реализует этот вид эффективности?