Анализ методов обновления DOM в современных веб-фреймворках: Virtual DOM и Incremental DOM

Обложка

Цитировать

Полный текст

Аннотация

Статья представляет собой анализ современных методов обновления структуры Document Object Model (DOM) в популярных клиентских веб-фреймворках, таких как Angular, React и Vue. Основное внимание уделяется сравнению концепций Virtual DOM и Incremental DOM, которые лежат в основе архитектурных решений соответствующих фреймворков. Virtual DOM, применяемый в React и Vue, оперирует виртуальным деревом, сравнивает его версии с целью выявления различий и минимизации изменений в реальном DOM. Такой подход обеспечивает относительную простоту реализации реактивного интерфейса, однако сопровождается дополнительными затратами на вычисления и использование ресурсов. В отличие от него, Angular использует Incremental DOM, при котором отсутствует создание промежуточных структур: изменения применяются напрямую через механизм Change Detection. Этот подход позволяет добиваться высокой производительности за счёт точечных обновлений DOM-элементов без необходимости в виртуальном представлении. В исследовании применяется сравнительный анализ архитектурных подходов к обновлению DOM, основанный на изучении официальной документации, практических экспериментов с кодом и визуализации процессов рендеринга в Angular и React. Методология включает теоретическое обоснование, пошаговый разбор механизмов обновлений и оценку их влияния на производительность. Научная новизна статьи заключается в систематическом сопоставлении архитектурных подходов к обновлению DOM в ведущих фреймворках, с акцентом на внедрение сигнальной модели в Angular версии 17+. Подробно проанализировано влияние использования сигналов на отказ от библиотеки Zone.js и формирование более предсказуемой, детерминированной модели рендеринга, а также возможности управления производительностью на более низком уровне. Статья содержит не только теоретическое описание, но и практические примеры, раскрывающие поведение обновлений в реальных сценариях. Также рассматриваются нюансы шаблонной компиляции, работы функций effect() и computed(). Проведённое сравнение Virtual DOM и Incremental DOM позволяет выявить ключевые различия, оценить применимость подходов в зависимости от задач и уровня сложности проекта, а также предложить направления оптимизации фронтенд-архитектур.

Об авторах

Олеся Сергеевна Бондаренко

Федеральное государственное автономное образовательное учреждение высшего образования «Национальный исследовательский университет ИТМО».

Email: rancerenly@gmail.com
ORCID iD: 0009-0003-5477-6947
магистр; Факультет программной инженерии и компьютерной техники;

Список литературы

  1. Бетеев К.Ю., Муратова Г.В. Концепция virtual dom в библиотеке react.js // Инженерный вестник Дона. – 2022. – № 3. – С. 170-180. EDN: LHOOOS.
  2. Incremental DOM [Электронный ресурс]. URL: https://github.com/google/incremental-dom (дата обращения: 16.04.2025).
  3. Introducing Incremental DOM [Электронный ресурс]. URL: https://medium.com/google-developers/introducing-incremental-dom-e98f79ce2c5f (дата обращения: 12.04.2025).
  4. Understanding Angular Ivy: Incremental DOM and Virtual DOM [Электронный ресурс]. URL: https://blog.nrwl.io/understanding-angular-ivy-incremental-dom-and-virtual-dom-243be844bf36 (дата обращения: 16.04.2025).
  5. Разбираемся в Angular Ivy: Incremental DOM и Virtual DOM [Электронный ресурс]. URL: https://habr.com/ru/articles/448048/ (дата обращения: 03.03.2025).
  6. Virtual DOM vs Incremental DOM in Angular [Электронный ресурс]. URL: https://www.angularminds.com/blog/virtual-dom-vs-incremental-dom-in-angular (дата обращения: 17.02.2025).
  7. Angular Документация [Электронный ресурс]. URL: https://angular.dev/api/core/ChangeDetectionStrategy (дата обращения: 16.04.2025).
  8. Довженко М.И., Готская И.Б. Анализ способов реализации алгоритма отслеживания изменений в одностраничных веб-приложениях // Альманах научных работ молодых ученых XLVII научной и учебно-методической конференции Университета ИТМО. Том 7. – 2018. – С. 123-126. EDN: YXNFSH.
  9. Исходный код примеров [Электронный ресурс]. URL: https://stackblitz.com/edit/6meb5pyu?file=src%2Fmain.ts (дата обращения: 16.04.2025).
  10. Zone.js [Электронный ресурс]. URL: https://github.com/angular/angular/tree/main/packages/zone.js (дата обращения: 16.04.2025).

Дополнительные файлы

Доп. файлы
Действие
1. JATS XML

Согласие на обработку персональных данных

 

Используя сайт https://journals.rcsi.science, я (далее – «Пользователь» или «Субъект персональных данных») даю согласие на обработку персональных данных на этом сайте (текст Согласия) и на обработку персональных данных с помощью сервиса «Яндекс.Метрика» (текст Согласия).