Описание тега native-web-component
Собственные веб-компоненты - это элементы, зарегистрированные в DOM, которые можно легко повторно использовать на странице и инкапсулировать их сценарии, шаблоны и стили.
Некоторым браузерам по-прежнему требуется один или несколько полифилов для работы с собственными веб-компонентами.
Не используйте этот тег для компонентов, созданных сторонними платформами, такими как Polymer или Angular.
Веб-компоненты полагаются на следующие функции браузера:
Пользовательские элементы позволяют создавать определенные пользователем элементы с помощью класса ES6, который определяет их поведение и функциональность. Например, если вы хотите создать
<my-element>
(в соглашении об именах всегда используется не менее 1 дефиса) для класса с именемMyElement
вы можете позвонить:customElements.define('my-element', MyElement);
Пользовательские элементы - единственная необходимая часть веб-компонента.Shadow DOM позволяет разделу документа страницы быть новым, самодостаточным элементом. По умолчанию стили и скрипты не включаются и не выходят каскадом, а "теневой" DOM (написанный автором компонента) хранится отдельно от "легкого" DOM (написанного разработчиком с использованием компонента).
<slot>
предоставляет точку вставки для светлого содержимого.attachShadow()
позволяет<template>
быть предоставленным для HTML компонента.В
<template>
element позволяет использовать фрагмент разметки в качестве шаблона для добавления содержимого в DOM. Разметка вtemplate
элемент анализируется, но не отображается и не "запускается". Например, скрипты вtemplate
элемент не выполняются. С 2018 года веб-компоненты переходят от импорта HTML к модулям ES6 и<template>
element не так часто используется в компонентах на основе JavaScript.HTML-импорт был рекомендуемым механизмом для создания и загрузки веб-компонентов. Некоторые производители браузеров не поддерживают импорт HTML, и они не являются устаревшими и заменяются модулями ES6.
Модули ES6 в настоящее время являются рекомендуемым механизмом для загрузки веб-компонентов. Ваш компонент теперь создан в файле JavaScript и загружен с использованием
import
заявление.
Веб-компоненты являются клиентскими, но не все связаны с пользовательским интерфейсом. Например, веб-воркер и клиенты IndexedDB могут быть написаны как компоненты.