Рубрики
Без рубрики

Требуется ли виртуальная сторона? Упрощенный пример

Прежде чем мы начнем, давайте посмотрим, является ли браузер DOM медленнее, чем весь код JavaScript, который выполняется … Tagged с JavaScript, React, WebDev, Vue.

Прежде чем мы запустим, давайте посмотрим, является ли Browser DOM медленнее, чем весь код JavaScript, который выполняется в двигателе JavaScript.

Вместо всего виртуального кода DOM давайте возьмем очень маленький фрагмент JavaScript, где массив собирает увеличенное число через цикл. После того, как петля заканчивается, он добавляет массив чисел в DOM.

Во втором случае давайте обновим DOM внутри цикла при каждом приращении.

Вот скриншот от JSperf, где был записан небольшой тестовый пример для сравнения. И результат выглядит как показано ниже,

Результаты ясно показывают, что обновление DOM для каждого приращения – 100% медленнее чем JavaScript Funpution и обновление DOM только один раз.

Посмотрим, почему это на 100% медленнее?

Чтобы пересмотреть основы, JavaScript Engine сначала выполняет весь код, а затем Dom Plus CSSOM должен быть готов. Только после этого первый пиксель на экране будет окрашен.

DOM – это браузер Engine, а JavaScript – JavaScript Engine. Всякий раз, когда происходит обновление DOM, оба двигателя должны общаться, привлекая задержку.

Из -за рабочего процесса, который происходит до первой краски, каждый раз, когда DOM обновляется с помощью кода JavaScript domelement.innerhtml , CSSOM также должен завершить. Это добавляет дальше к задержке. Снова запускается следующая строка кода JavaScript. Это требует переключения между выполнением с помощью двигателя JavaScript и двигателем браузера, если не используются запасные или асинхронные теги.

Виртуальный DOM помогает

Виртуальный DOM, имеющий дерево, которое хранится и выполняется самим двигателем JavaScript, делает вещи намного менее медленными.

  • Количество раз, когда общие общение, уменьшается общение.
  • Нет необходимости завершать CSSOM, так как стили не должны применяться в виртуальном DOM.
  • Каждый раз, когда виртуальный DOM обновляется, не существует переключения выполнения, так как его запускается только двигателем JavaScript.
  • Хотя это хорошая практика не обновлять виртуальный DOM также всякий раз, когда он не требуется, существует довольно хороший маржа по снижению производительности, которая может испортить нашу производительность приложения.
  • Это означает плавное взаимодействие с пользователем, более быстрое первое время краски и, следовательно, лучший рейтинг SEO.
  • Мы даже не говорим о эффективном написании виртуального DOM. Тем не менее, это полезно, если мы просто позаботимся об очень немногих сценариях.

Из всех случаев, на данный момент виртуальный DOM намного полезен. Это будет оставаться таким же, если браузеры не приведут к стратегии для устранения задержек обновления DOM.

Комментарий к вышеупомянутому чтению был бы очень полезен для меня, чтобы улучшить мои работы дальше. Спасибо за время!

Оригинал: “https://dev.to/svaani/is-virtual-dom-needed-1lo7”