Skip to content

VirtualDOM vs IncrementalDOM vs RemakeDOM vs ShadowDOM vs ManualDOM vs DirectDOM

nin-jin edited this page Nov 9, 2022 · 1 revision

Различные методы рендеринга..

VirtualDOM

  • Создание нового виртуального дерева, сравнение его с предыдущей версией, и применение разницы к реальному дереву.
  • Используется в React и его клонах.
  • Постоянное выделение и освобождение памяти.
  • Много лишней работы даже если реальное дерево никак не поменяется.

IncrementalDOM

  • Исполнение последовательности инструкций рендеринга, которые игнорируют запуск с теми же параметрами, что и в прошлый раз.
  • Используется в Angular Ivy.
  • Много лишней работы даже если реальное дерево никак не поменяется.

RemakeDOM

  • Полное удаление прошлого дерева, создание нового с нуля и восстановление его состояния.
  • Используется в проектах на базе строковых шаблонизаторов типа handlebars и других.
  • Пересоздание дерева очень дорого.
  • Восстанавливать состояние сложно и не всегда возможно (например, открытость селекта).

ShadowDOM

  • Рекурсивное использование узлов реального дерева в качестве компонент.
  • Используется в Polymer.
  • Постоянное работа через хостовые объекты само по себе медленное, так ещё и блокирует JIT оптимизации.
  • Очень неудобный API.

ManualDOM

  • Ручное создание и обновление дерева.
  • Используется в проектах на базе jQuery, Vanilla.
  • Много сложного кода, что приводит к багам и тормозам.

DirectDOM

  • Прямая связь свойств компонента со свойствами узла дерева.
  • Используется в $mol.