Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

В чем разница между Shadow DOM и Virtual DOM? в REACT кратко

Практика



Привет, Вы узнаете о том , что такое виртуальный dom, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое виртуальный dom, dom, shadow dom , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend).

Shadow DOM является технологией браузера предназначена в первую очередь для определения объема переменных и CSS в веб - компонентах . Virtual DOM является концепция реализуется в библиотеках JavaScript на вершине API для браузера.

React JS — это JavaScript-библиотека, разработанная в Facebook для создания пользовательских интерфейсов, которая популяризировала идею использования виртуального DOM. React создает легковесное дерево из JavaScript-объектов для имитации DOM-дерева. Затем он создает из них HTML, который вставляется или добавляется к нужному DOM-элементу, что вызывает перерисовку страницы в браузере.

1. Что такое DOM?

Новички часто вводят DOM в заблуждение тем, что они создают как HTML-структуру своего веб-сайта или приложения. Но HTML становится DOM после того, как браузер анализирует его, а затем становится DOM. В определении говорится, что DOM - это API для документов HTML или XML, и он создает логическую структуру, к которой можно получить доступ и управлять ею. Другими словами, Javascript может получать доступ и вносить изменения в объектную модель документа. Причиной реализации объектной модели документа было предоставление стандартного интерфейса программирования, который можно было бы использовать с любым языком программирования в различных средах. Под модификацией DOM мы можем понимать добавление, удаление или изменение элементов веб-сайта, назначение им различного поведения и т. Д. Каждый браузер имеет свой глобальный объект, называемый окном. Внутри окна есть разные свойства и методы. Одно из свойств объекта window - это документ, в котором мы можем найти множество свойств и методов, которые можно использовать для доступа к элементам DOM для взаимодействия с ними. Графическое представление DOM выглядит так, как в примере ниже:

В чем разница между Shadow DOM и Virtual DOM? в REACT

Как видите, он создан в виде дерева. Он начинается с основного объекта документа, затем создается объект html, а элемент html ведет к заголовку и телу и так далее. Каждый из объектов представляет собой HTML-элемент веб-сайта в виде объекта со свойствами, атрибутами и методами, которые позволяют его изменять.

Проблема DOM
Главная проблема DOM — он никогда не был рассчитан для создания динамического пользовательского интерфейса (UI). Мы можем работать с ним, используя JavaScript и библиотеки наподобие jQuery, но их использование не решает проблем с производительностью.
Посмотрите на современные социальные сети, такие как Twitter, Facebook или Pinterest.
После небольшого скроллинга, мы будем иметь десятки тысяч DOM-узлов, эффективно взаимодействовать с которыми — задача не из легких.
Для примера, попробуйте переместить 1000 div-блоков на 5 пикселей влево.
Это может занять больше секунды — это слишком много для современного интернета. Об этом говорит сайт https://intellect.icu . Вы можете оптимизировать скрипт и использовать некоторые приемы, но в итоге это вызовет лишь головную боль при работе с огромными страницами и динамическим UI.
Можем ли мы решить эту проблему? Похоже, что можем.
В настоящее время W3C работает над новым стандартом Shadow DOM.

2. Shadow DOM

Shadow DOM - это инструмент, используемый для создания приложений и веб-сайтов на основе компонентов.

Также Shadow DOM — это рабочий черновик стандарта W3C. Спецификация, описывающая метод объединения нескольких DOM-деревьев в одну иерархию и как эти деревья взаимодействуют друг с другом в пределах документа, что позволяет лучше скомпоновать DOM.

Shadow DOM состоит из небольших частей и не представляет всю объектную модель документа. Мы можем рассматривать его как поддерево или как отдельную DOM для элемента. Теневой DOM можно представить как кирпичи, из которых создается DOM. Основное различие между DOM и Shadow DOM заключается в том, как он создается и как ведет себя. Обычно узлы DOM, которые мы создаем, размещаются внутри других элементов, как в дереве, которое мы видели ранее. В случае Shadow DOM мы создаем дерево с областью видимости, которое связано с элементом, но отделено от дочерних элементов. Это называется теневым деревом, а элемент, к которому оно прикреплено, называется теневым хостом. И здесь мы подходим к большому преимуществу Shadow DOM: все, что мы добавим в Shadow DOM, является локальным, даже стили. Давайте объясним, почему Shadow DOM так полезен и какие проблемы он решает. Прежде всего, он изолирует DOM, поэтому DOM компонента представляет собой отдельный элемент, который не будет отображаться в глобальной DOM. Еще одна проблема, с которой он помогает, - это определение объема CSS, что означает, что стили, созданные внутри одного элемента Shadow DOM, изолированы и остаются в рамках этого Shadow DOM. Это значительно упрощает стили, поскольку нам не нужно сильно беспокоиться об именах пространства, и мы можем использовать простые селекторы и имена классов. Кроме того, мы можем думать о приложении, как о том, что оно построено из блоков (на самом деле оно основано на компонентах), а не как об одном массивном глобальном объекте. Теневой DOM может повлиять на производительность приложения. Как было сказано в начале статьи, есть много проблем с производительностью, пока мы хотим манипулировать DOM, потому что каждое изменение приведет к повторной визуализации всего объекта. В случае с Shadow DOM браузер знает, какую часть нужно обновить.

3. виртуальный dom

Виртуальный DOM - это концепция DOM, используемая React.js и Vue.js. В концепции виртуального DOM копия DOM сохраняется в памяти, и, хотя любые изменения выполняются в DOM, она сравнивается, чтобы найти различия. Затем браузер знает, какие элементы были изменены, и может обновлять только эту часть приложения, чтобы избежать повторного рендеринга всей DOM. Это сделано для повышения производительности библиотек пользовательского интерфейса. Как мы знаем, из предыдущего абзаца в DOM каждый элемент повторно отображается, независимо от того, был он изменен или нет. Давайте подробно рассмотрим, как работает Virtual DOM, шаг за шагом. Итак, сначала вносятся изменения, и это делается с виртуальной DOM, а не с исходной DOM, затем виртуальная DOM сравнивается с объектной моделью документа, и этот процесс называется «различием». Хотя различия обнаруживаются, браузер знает, какие элементы в исходной модели DOM следует обновить, и обновление выполнено. В концепции Virtual DOM можно применить более одного изменения одновременно, чтобы избежать повторного рендеринга для каждого отдельного изменения элемента. Самая большая проблема, которую решает Virtual DOM, - это повышение производительности при манипулировании DOM.

Вместо того, чтобы взаимодействовать с DOM напрямую, мы работаем с его легковесной копией. Мы можем вносить изменения в копию, исходя из наших потребностей, а после этого применять изменения к реальному DOM.
При этом происходит сравнение DOM-дерева с его виртуальной копией, определяется разница и запускается перерисовка того, что было изменено.
Такой подход работает быстрее, потому как не включает в себя все тяжеловесные части реального DOM.
Но только если мы делаем это правильно. Есть две проблемы: когда именно делать повторную перерисовку DOM и как это сделать эффективно.

Когда данные изменяются и нуждается в обновлении.

Есть два варианта узнать, что данные изменились:
* Первый из них — «dirty checking» (грязная проверка) заключается в том, чтобы опрашивать данные через регулярные промежутки времени и рекурсивно проверять все значения в структуре данных.
* Второй вариант — «observable» (наблюдаемый) заключается в наблюдении за изменением состояния. Если ничего не изменилось, мы ничего не делаем. Если изменилось, мы точно знаем, что нужно обновить.
Как?

Что делает этот подход действительно быстрым:

Эффективные алгоритмы сравнения
* Группировка операций чтения/записи при работе с DOM
* Эффективное обновление только под-деревьев
Как вы понимаете, это не так просто и реализация может оказаться довольно сложной, но есть некоторые библиотеки, которые помогают реализовать этот подход в наших проектах.
Одной из таких самых известных библиотек является React от команды разработчиков Facebook.

4. Различия между Shadow DOM и Virtual DOM

Единственное, что их объединяет, - это то, что они помогают с проблемами производительности. Оба создают отдельный экземпляр объектной модели документа; Помимо этого, обе концепции различны. Virtual DOM создает копию всего объекта DOM, а Shadow DOM создает небольшие части объекта DOM, которые имеют свою собственную изолированную область действия для элемента, который они представляют.

Заключение

Концепция DOM очень важна во внешнем программировании, но с развитием технологий и новых библиотек улучшения коснулись и объектной модели документа. Благодаря прогрессивным веб-фреймворкам мы можем использовать Shadow DOM и Virtual DOM, чтобы избежать проблем с производительностью и изменять DOM быстрее и эффективнее. Теперь больше не повод для беспокойства, как взаимодействовать с объектом DOM, чтобы не очаровывать производительность, поскольку с развитием технологий пришла помощь. Я надеюсь, что эта статья поможет вам понять, что такое DOM и как работают концепции Virtual и Shadow DOM. Также я объяснил основные различия между ними и проблемы, которые они решили. Удачного кодирования!

Исследование, описанное в статье про виртуальный dom, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое виртуальный dom, dom, shadow dom и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)

создано: 2020-02-23
обновлено: 2024-11-14
169



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)

Термины: Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)