JavaScript를 사용한 웹 구성 요소
6265 단어 webdevjavascriptwebcomponent
웹 컴포넌트를 배우기 위해서는 세 가지를 이해해야 합니다.
사용자 정의 요소: JavaScript API를 사용하여 사용자 정의 DOM 요소/태그를 생성할 수 있습니다. 관례에 따라 사용자 정의 요소를 선언하려면 하이픈을 사용하십시오(예:
<my-element></my-element>
). 다른 기본 요소를 방해하지 않도록 하이픈을 사용합니다.Shadow DOM: 비공개의 격리된 사용자 지정 요소를 생성해야 하는 경우 Shadow DOM이라는 JavaScript API 집합을 사용합니다. 또한 기본 문서 DOM과 별도로 렌더링됩니다.
HTML 템플릿: 기본 렌더링 페이지에 표시되지 않는 몇 가지 HTML 요소가 있습니다. 실제로 요소 콘텐츠를 렌더링해야 할 때 해당 요소 콘텐츠를 렌더링할 수 있으며 해당 콘텐츠를 재사용할 수도 있습니다. 이러한 요소는 다음과 같습니다.
<template>
, <slot>
맞춤 요소
이제 커스텀 요소를 만드는 방법을 살펴보겠습니다. 사용자 정의 요소를 생성하기 위해
define
API의 customElements
메서드를 호출해 보겠습니다.customElements.define('my-component', CustomComponent);
이제 HTMLElement에서 CustomComponent 클래스를 확장하여 사용자 정의 요소를 생성해 보겠습니다.
class CustomComponent extends HTMLElement {
connectedCallback() {
this.innerHTML = `<p>Hello Universe</p>`;
}
}
customElements.define('my-component', CustomComponent);
HTMLElement
에는 4개의 수명 주기 후크가 있습니다. connectedCallback
도 그 중 하나입니다. 요소가 DOM에 삽입될 때마다 실행됩니다. 그 안에 마크업을 추가하고 다른 구성 요소에서 종속성 데이터를 가져올 수 있습니다.섀도우 DOM
또한 격리된 구성 요소를 만들 수도 있습니다. 격리된 구성 요소는 기본 DOM을 어지럽히지 않습니다. Shadow DOM이라는 라이트 대기 DOM에서 렌더링합니다. 기본 DOM에서는 모든 것이 전역 범위에 있습니다. 따라서 충돌 및 보안 문제가 쉽게 발생할 수 있습니다. Shadow DOM은 사용자 지정 구성 요소의 래퍼이며 구성 요소를 다른 기본 DOM 요소/구성 요소와 격리시킵니다. 모든 기본 DOM 요소 또는 사용자 지정 요소에 Shadow DOM을 연결할 수 있습니다.
class CustomComponent extends HTMLElement {
constructor() {
super();
const shadowRoot = this.attachShadow({mode: 'open'});
shadowRoot.innerHTML = `<p>Hello Universe</p>`;
}
}
customElements.define('my-component', CustomComponent);
.
HTML 템플릿
<template>
태그 내용이 페이지에서 렌더링되지 않습니다. 따라서 콘텐츠를 작성한 다음 사용자 지정 구성 요소에서 JavaScript로 해당 노드를 복제할 수 있습니다.class TestComponent extends HTMLElement {
constructor() {
super();
const templateNode = document.getElementById('my-template');
const templateContent = templateNode.content;
this.attachShadow({mode: 'open'}).appendChild(
templateContent.cloneNode(true)
);
}
}
customElements.define('my-template', TestComponent);
.
Reference
이 문제에 관하여(JavaScript를 사용한 웹 구성 요소), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/abmsourav/web-components-with-javascript-8c6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)