Angular: есть ли у него эквивалент ReactJS «Примирение»? - PullRequest
0 голосов
/ 31 октября 2018

Прочитав документацию и несколько статей о 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, который реализует этот вид эффективности?

1 Ответ

0 голосов
/ 01 ноября 2018

Можно ли сказать, что Angular достигает аналогичного прироста производительности ... таким образом устранение необходимости в оптимизированном алгоритме диффузии

Да

В React не так много оптимизации. Он просто сравнивает тип возвращаемых дочерних элементов и отбрасывает дерево. Сравнение с ключами является более сложным. Я бы сказал, что Angular запускает обнаружение изменений быстрее, потому что все дочерние элементы известны во время компиляции, но React более гибок, поскольку вы можете возвращать совершенно новый дочерний элемент каждый раз. В Angular есть целый ряд концепций, которые вам необходимо знать для динамического изменения или удаления детей. В React это просто вопрос возвращения другого потомка из метода render.

...