Анализ методов обновления 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

Согласие на обработку персональных данных с помощью сервиса «Яндекс.Метрика»

1. Я (далее – «Пользователь» или «Субъект персональных данных»), осуществляя использование сайта https://journals.rcsi.science/ (далее – «Сайт»), подтверждая свою полную дееспособность даю согласие на обработку персональных данных с использованием средств автоматизации Оператору - федеральному государственному бюджетному учреждению «Российский центр научной информации» (РЦНИ), далее – «Оператор», расположенному по адресу: 119991, г. Москва, Ленинский просп., д.32А, со следующими условиями.

2. Категории обрабатываемых данных: файлы «cookies» (куки-файлы). Файлы «cookie» – это небольшой текстовый файл, который веб-сервер может хранить в браузере Пользователя. Данные файлы веб-сервер загружает на устройство Пользователя при посещении им Сайта. При каждом следующем посещении Пользователем Сайта «cookie» файлы отправляются на Сайт Оператора. Данные файлы позволяют Сайту распознавать устройство Пользователя. Содержимое такого файла может как относиться, так и не относиться к персональным данным, в зависимости от того, содержит ли такой файл персональные данные или содержит обезличенные технические данные.

3. Цель обработки персональных данных: анализ пользовательской активности с помощью сервиса «Яндекс.Метрика».

4. Категории субъектов персональных данных: все Пользователи Сайта, которые дали согласие на обработку файлов «cookie».

5. Способы обработки: сбор, запись, систематизация, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передача (доступ, предоставление), блокирование, удаление, уничтожение персональных данных.

6. Срок обработки и хранения: до получения от Субъекта персональных данных требования о прекращении обработки/отзыва согласия.

7. Способ отзыва: заявление об отзыве в письменном виде путём его направления на адрес электронной почты Оператора: info@rcsi.science или путем письменного обращения по юридическому адресу: 119991, г. Москва, Ленинский просп., д.32А

8. Субъект персональных данных вправе запретить своему оборудованию прием этих данных или ограничить прием этих данных. При отказе от получения таких данных или при ограничении приема данных некоторые функции Сайта могут работать некорректно. Субъект персональных данных обязуется сам настроить свое оборудование таким способом, чтобы оно обеспечивало адекватный его желаниям режим работы и уровень защиты данных файлов «cookie», Оператор не предоставляет технологических и правовых консультаций на темы подобного характера.

9. Порядок уничтожения персональных данных при достижении цели их обработки или при наступлении иных законных оснований определяется Оператором в соответствии с законодательством Российской Федерации.

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