【かすたむえれめんつ】
Custom Elements とは?
💡 自分だけの「HTMLタグ」を定義する
📌 このページのポイント
のような独自HTMLタグを定義できる - Web Componentsの3本柱の1つ(Shadow DOM、HTML Templates と併用)
- フレームワーク非依存で、どのプロジェクトでも使える
- connectedCallback等のライフサイクルフックを持つ
どうやって作るの?
class MyComponent extends HTMLElement { connectedCallback() { this.innerHTML = '<p>Hello!</p>'; } } で定義して、customElements.define('my-component', MyComponent)で登録。あとは<my-component></my-component>でHTMLに書ける。タグ名にはハイフンが必須(既存タグとの衝突を防ぐため)だよ
ライフサイクルは?
実務で使うライブラリは?
Lit(Google製)がCustom Elements開発のデファクト。デコレーターでリアクティブプロパティを簡潔に定義でき、テンプレートはhtml tagged templateで書く。StencilJS(Ionic製)はTypeScript+JSXでCustom Elementsを作れる。どちらもビルドして配布すればフレームワーク問わず使えるよ
📖 おまけ:英語の意味
「Custom Elements」 = カスタム要素
💬 Custom(独自の)Elements(要素)。HTMLの標準タグと同じように使える独自タグだよ