<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>worldwide open-source software - software:development:web:docs:web:web_components</title>
        <description></description>
        <link>http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/</link>
        <lastBuildDate>Fri, 10 Apr 2026 03:40:30 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:logo.png</url>
            <title>worldwide open-source software</title>
            <link>http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/</link>
        </image>
        <item>
            <title>web_components</title>
            <link>http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:web:web_components:web_components&amp;rev=1692636794</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;веб-компоненты&quot;&gt;Веб-компоненты&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Веб-компоненты — это набор различных технологий, позволяющих создавать многократно используемые настраиваемые элементы — с их функциональностью, изолированной от остального кода — и использовать их в своих веб-приложениях.
&lt;/p&gt;

&lt;p&gt;
Концепции и использование
Как разработчики, мы все знаем, что повторное использование кода — это хорошая идея. Традиционно это было не так просто для пользовательских структур разметки — подумайте о сложном &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; (и связанном с ним стиле и сценарии), который вам иногда приходилось писать для отображения пользовательских элементов управления пользовательского интерфейса, и о том, как их многократное использование может превратить вашу страницу в беспорядок. если вы не будете осторожны.
&lt;/p&gt;

&lt;p&gt;
Веб-компоненты призваны решить такие проблемы — они состоят из трех основных технологий, которые можно использовать вместе для создания универсальных пользовательских элементов с инкапсулированной функциональностью, которые можно повторно использовать где угодно, не опасаясь коллизий кода.
&lt;/p&gt;

&lt;p&gt;
Пользовательские элементы
Набор &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt;-интерфейсов JavaScript, которые позволяют вам определять пользовательские элементы и их поведение, которые затем можно использовать по желанию в вашем пользовательском интерфейсе.
&lt;/p&gt;

&lt;p&gt;
Тень ДОМ
Набор &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt;-интерфейсов JavaScript для прикрепления инкапсулированного «теневого» дерева DOM к элементу, который отображается отдельно от основного документа DOM, и управления соответствующей функциональностью. Таким образом, вы можете сохранить свойства элемента в тайне, чтобы их можно было использовать в сценариях и стилях, не опасаясь столкновения с другими частями документа.
&lt;/p&gt;

&lt;p&gt;
&lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;-шаблоны
Элементы &amp;lt;template&amp;gt;и &amp;lt;slot&amp;gt;позволяют писать шаблоны разметки, которые не отображаются на отображаемой странице. Затем их можно повторно использовать несколько раз в качестве основы структуры пользовательского элемента.
&lt;/p&gt;

&lt;p&gt;
Базовый подход к реализации веб-компонента обычно выглядит примерно так:
&lt;/p&gt;

&lt;p&gt;
Создайте класс, в котором вы указываете функциональность веб-компонента, используя синтаксис класса .
Зарегистрируйте новый пользовательский элемент с помощью CustomElementRegistry.define()метода, передав ему имя определяемого элемента, класс или функцию, в которой указаны его функциональные возможности, и, необязательно, элемент, от которого он наследуется.
При необходимости прикрепите теневой DOM к пользовательскому элементу с помощью Element.attachShadow()метода. Добавьте дочерние элементы, прослушиватели событий и т. д. в теневой DOM, используя обычные методы DOM.
При необходимости определите шаблон &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; с помощью &amp;lt;template&amp;gt;и &amp;lt;slot&amp;gt;. Снова используйте обычные методы DOM, чтобы клонировать шаблон и прикрепить его к теневой модели DOM.
Используйте свой пользовательский элемент в любом месте на странице, как и любой обычный элемент &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;.
Гиды
Использование пользовательских элементов
Руководство, показывающее, как использовать функции пользовательских элементов для создания простых веб-компонентов, а также изучение обратных вызовов жизненного цикла и некоторых других более сложных функций.
&lt;/p&gt;

&lt;p&gt;
Использование теневого DOM
Руководство, в котором рассматриваются основы теневого DOM, показывающие, как прикрепить теневой DOM к элементу, добавить его в дерево теневого DOM, стилизовать его и многое другое.
&lt;/p&gt;

&lt;p&gt;
Использование шаблонов и слотов
Руководство, показывающее, как определить многократно используемую структуру &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; с помощью элементов &amp;lt;template&amp;gt;и &amp;lt;slot&amp;gt;, а затем использовать эту структуру в веб-компонентах.
&lt;/p&gt;

&lt;p&gt;
Ссылка
Пользовательские элементы
CustomElementRegistry
Содержит функциональные возможности, связанные с пользовательскими элементами, в первую очередь CustomElementRegistry.define()метод, используемый для регистрации новых пользовательских элементов, чтобы их можно было затем использовать в вашем документе.
&lt;/p&gt;

&lt;p&gt;
Window.customElements
Возвращает ссылку на CustomElementRegistryобъект.
&lt;/p&gt;

&lt;p&gt;
Обратные вызовы жизненного цикла
Специальные функции обратного вызова, определенные внутри определения класса пользовательского элемента, которые влияют на его поведение:
&lt;/p&gt;

&lt;p&gt;
connectedCallback()
Вызывается, когда пользовательский элемент впервые подключается к DOM документа.
&lt;/p&gt;

&lt;p&gt;
disconnectedCallback()
Вызывается, когда пользовательский элемент отключается от DOM документа.
&lt;/p&gt;

&lt;p&gt;
adoptedCallback()
Вызывается, когда пользовательский элемент перемещается в новый документ.
&lt;/p&gt;

&lt;p&gt;
attributeChangedCallback()
Вызывается при добавлении, удалении или изменении одного из атрибутов пользовательского элемента.
&lt;/p&gt;

&lt;p&gt;
Расширения для создания пользовательских встроенных элементов
Определены следующие расширения:
&lt;/p&gt;

&lt;p&gt;
Глобальный isатрибут &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;
Позволяет указать, что стандартный элемент &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; должен вести себя как зарегистрированный настраиваемый встроенный элемент.
&lt;/p&gt;

&lt;p&gt;
Вариант «есть» Document.createElement()метода
Позволяет создать экземпляр стандартного &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;-элемента, который ведет себя как заданный зарегистрированный настраиваемый встроенный элемент.
&lt;/p&gt;

&lt;p&gt;
Псевдоклассы &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;
Псевдоклассы, относящиеся конкретно к пользовательским элементам:
&lt;/p&gt;

&lt;p&gt;
:defined
Соответствует любому определенному элементу, включая встроенные элементы и пользовательские элементы, определенные с помощью CustomElementRegistry.define().
&lt;/p&gt;

&lt;p&gt;
:host
Выбирает теневой хост теневого DOM , содержащего &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;, внутри которого он используется.
&lt;/p&gt;

&lt;p&gt;
:host()
Выбирает теневой хост теневого DOM , содержащего &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;, внутри которого он используется (так что вы можете выбрать пользовательский элемент внутри его теневого DOM), но только если селектор, указанный в качестве параметра функции, соответствует теневому хосту.
&lt;/p&gt;

&lt;p&gt;
:host-context()
Выбирает теневой хост теневого DOM , содержащего &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;, внутри которого он используется (так что вы можете выбрать пользовательский элемент внутри его теневого DOM) — но только если селектор, указанный в качестве параметра функции, соответствует предку(ам) теневого хоста в поместите его внутри иерархии DOM.
&lt;/p&gt;

&lt;p&gt;
Псевдоэлементы &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;
Псевдоэлементы, относящиеся конкретно к пользовательским элементам:
&lt;/p&gt;

&lt;p&gt;
::part
Представляет любой элемент в теневом дереве , который имеет соответствующий partатрибут.
&lt;/p&gt;

&lt;p&gt;
Тень ДОМ
ShadowRoot
Представляет корневой узел теневого поддерева DOM.
&lt;/p&gt;

&lt;p&gt;
Elementрасширения
Расширения интерфейса Element, связанные с теневым DOM:
&lt;/p&gt;

&lt;p&gt;
Метод Element.attachShadow()прикрепляет теневое дерево DOM к указанному элементу.
Свойство Element.shadowRootвозвращает теневой корень, прикрепленный к указанному элементу, или nullесли теневой корень не прикреплен.
Соответствующие Nodeдополнения
Дополнения к Nodeинтерфейсу, относящиеся к теневому DOM:
&lt;/p&gt;

&lt;p&gt;
Метод Node.getRootNode()возвращает корень объекта контекста, который необязательно включает теневой корень, если он доступен.
Свойство Node.isConnectedвозвращает логическое значение, указывающее, подключен ли узел (прямо или косвенно) к объекту контекста, например, к объекту Documentв случае обычного DOM или ShadowRootв случае теневого DOM.
Eventрасширения
Расширения интерфейса Event, связанные с теневым DOM:
&lt;/p&gt;

&lt;p&gt;
Event.composed
Возвращает значение true, если событие будет распространяться через границу теневого DOM в стандартный DOM, в противном случае false.
&lt;/p&gt;

&lt;p&gt;
Event.composedPath
Возвращает путь события (объекты, для которых будут вызываться прослушиватели). Это не включает узлы в теневых деревьях, если теневой корень был создан с ShadowRoot.modeзакрытым.
&lt;/p&gt;

&lt;p&gt;
&lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;-шаблоны
&amp;lt;template&amp;gt;
Содержит фрагмент &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;, который не отображается при первоначальной загрузке содержащего документа, но может отображаться во время выполнения с помощью JavaScript, который в основном используется в качестве основы для структур пользовательских элементов. Связанный интерфейс DOM — HTMLTemplateElement.
&lt;/p&gt;

&lt;p&gt;
&amp;lt;slot&amp;gt;
Заполнитель внутри веб-компонента, который можно заполнить собственной разметкой, что позволяет создавать отдельные деревья DOM и представлять их вместе. Связанный интерфейс DOM — HTMLSlotElement.
&lt;/p&gt;

&lt;p&gt;
Глобальный slotатрибут &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;
Назначает элементу слот в теневом дереве теневого DOM.
&lt;/p&gt;

&lt;p&gt;
Element.assignedSlot
Атрибут только для чтения, который возвращает ссылку на элемент, &amp;lt;slot&amp;gt;в который вставлен этот элемент.
&lt;/p&gt;

&lt;p&gt;
Text.assignedSlot
Доступный только для чтения атрибут, возвращающий ссылку на элемент, &amp;lt;slot&amp;gt;в который вставлен этот текстовый узел.
&lt;/p&gt;

&lt;p&gt;
Elementрасширения
Расширения интерфейса Element, связанные со слотами:
&lt;/p&gt;

&lt;p&gt;
Element.slot
Возвращает имя теневого слота DOM, прикрепленного к элементу.
&lt;/p&gt;

&lt;p&gt;
Псевдоэлементы &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;
Псевдоэлементы, относящиеся конкретно к слотам:
&lt;/p&gt;

&lt;p&gt;
::slotted
Соответствует любому содержимому, которое вставляется в слот.
&lt;/p&gt;

&lt;p&gt;
событие slotchange_
Запускается для HTMLSlotElementэкземпляра ( &amp;lt;slot&amp;gt;элемента), когда узлы, содержащиеся в этом слоте, изменяются.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 21 Aug 2023 16:53:14 +0000</pubDate>
        </item>
    </channel>
</rss>
