5 вопросов о веб-компонентах

В этой статье мы постараемся ответить на следующие вопросы, связанные с веб-компонентами:

  1. Что такое веб-компоненты?
  2. Каковы некоторые из основ веб-компонентов?
  3. Каковы некоторые приложения веб-компонентов?
  4. Каковы некоторые ограничения веб-компонентов?
  5. Простое демо.

Что такое веб-компоненты?

Проще говоря, веб-компоненты используются для создания пользовательских HTML-элементов или расширения существующего HTML-элемента (для обеспечения ваших пользовательских функций).

API-интерфейсы веб-компонентов являются частью стандартного API-интерфейса веб-платформы и соответствуют существующим веб-стандартам, что означает, что веб-компоненты работают в современном браузере без участия третьих лиц.

Каковы некоторые из основ веб-компонентов?

API пользовательских элементов:

Набор собственных API-интерфейсов Javascript (т.е. работает непосредственно в браузере), который позволяет разработчику определять собственные элементы HTML или расширять существующие.

  1. Пользовательский элемент может быть определен следующим образом:

2. connectedCallback, disconnectedCallback, adoptedCallback и attributeChangedCallback являются событиями жизненного цикла. Подробности читайте в комментариях на скриншоте.

3. Этот пользовательский элемент можно использовать как обычный HTML-элемент, как показано ниже:

4. Мы также можем расширить существующий элемент HTML, определив пользовательский элемент следующим образом:

5. Теперь мы можем использовать div следующим образом для использования в качестве my-custom-element :

Shadow DOM (объектная модель документа)

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

  1. ShadowDOM содержит все, что находится внутри красного квадрата.
  2. CSS, определенный внутри ShadowDOM, не влияет на «обычный div» снаружи. Точно так же CSS, определенный в основном DOM, не влияет на div внутри ShadowDOM.
  3. Обратите внимание, #shadow-root (open)Этопоказывает, что ShadowDOM был создан в открытом режиме. Открытый режим делает ShadowDOM доступным извне с помощью DOM javascript API, как показано ниже:

4. Если ShadowDOM создавался в закрытом режиме, то ShadowDom только. доступен изнутри пользовательского элемента (то есть: msg-component), и приведенная выше команда вернет null, как показано ниже:

HTML-шаблоны

‹template› можно использовать для повторного использования одной и той же структуры HTML в разных веб-компонентах, а ‹slot› можно использовать для интерполяции динамических данных в HTML (т. е. он будет отображать значение, переданное веб-компоненту как дочерний элемент, или значение по умолчанию, если ни один дочерний элемент не прошедший).

  1. Мы можем определить шаблон в любом месте html-файла. У него должен быть уникальный идентификатор, чтобы мы могли получить шаблон с помощью метода getElementById. Шаблон может инкапсулировать любую структуру HTML, включая тег стиля.

2. Приведенный выше шаблон можно прикрепить к веб-компоненту следующим образом:

3. Он отобразит Hello World, если в ‹hello-msg-component› не передано дочернее значение, так как World является значением по умолчанию.

4. Или он будет отображать любое значение, переданное в качестве дочернего элемента ‹hello-msg-component›.

Приложения веб-компонентов?

1. Свобода фреймворка:

Поскольку веб-компоненты изначально работают в современном браузере (без необходимости использования какой-либо сторонней библиотеки). Это качество делает их совместимыми с любым фреймворком или библиотекой, поскольку веб-компонент ничем не отличается от любых других элементов HTML. Это позволяет различным командам и организациям быть независимыми от фреймворка, что означает, что они могут выбирать любую инфраструктуру или библиотеку, которую они хотят использовать, и при этом иметь общие компоненты пользовательского интерфейса, написанные в веб-компоненте.

2. Последовательный UI/UX по всем направлениям:

Используя ShadowDOM, css можно заблокировать внутри веб-компонента, что означает, что css, определенный внутри ShadowDOM, нельзя манипулировать или переопределять извне (например, css приложения). Это приведет к согласованному UI/UX по всем направлениям. Например: если вам нужна круглая кнопка во всех ваших продуктах, вы просто создадите веб-компонент кнопки с круглой кнопкой css, заблокированной внутри теневого DOM, и это не позволит какой-либо команде переопределить ее преднамеренно или случайно.

Ограничения веб-компонентов:

Как и все остальное, веб-компоненты имеют некоторые компромиссы, о которых вы должны знать, прежде чем использовать их.

1. Поддержка устаревших браузеров:

Веб-компоненты хорошо работают во всех современных браузерах, но когда дело доходит до устаревших браузеров (например, 11), вам нужно добавить некоторые полифиллы для поддержки веб-компонентов.

2. Кривая обучения:

Поскольку веб-компоненты относительно не так известны, как React или Angular, у большинства разработчиков пользовательского интерфейса нет прошлого опыта их использования, а концепция shadowDOM может быть сложной для понимания поначалу.

3. Скрипты автоматизации:

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

Демо:

Вот простой калькулятор, написанный полностью с использованием веб-компонентов

Ссылка: https://rameezaijaz.com/webcomponents-demo/

GitHub: https://github.com/RameezAijaz/webcomponents-demo