フレームワークを整える
中級Lit を整える。
= ブラウザ標準のカスタム要素にひと工夫足す——タグとして使えるコンポーネントを作る
Lit が初めての方は、先に そもそも Lit とは・どんな場面で使うか をどうぞ。
サンプルコード(クリックでエディタに挿入)
コンソール
コードを書いて「実行」を押すと、ここに console 出力とエラーが出ます。
無限ループを書くとタブが固まることがあります。そのときは「■ 停止」を押してください。
そもそも Lit とは
Web 標準の部品づくりを、ぐっと書きやすくする小さな道具。
Lit は、Web Components(独自のタグ)を作りやすくするための小さなライブラリです。Google のチームが開発してきたもので、HTML のようなテンプレートを書くと、値が変わったときに必要な部分だけを描き直してくれます。
React や Vue のように画面全体を丸ごと握る「フレームワーク」ではなく、ブラウザ標準の仕組みに薄い層を足すだけの道具です。そのため作った部品は、ふつうの HTML タグとして、どんなサイトや他のフレームワークの中でも使えます。
どこで・どんな場面で使うか
-
会社やサービスで共通のボタン・入力部品を作るとき
ロゴや色をそろえた部品を一度作れば、別々の技術で作られた複数のサイトでも同じタグで使い回せます。
-
管理画面にウィジェットを埋め込むとき
既存のページの一部だけを部品にして足せるので、画面全体を作り替える必要がありません。
-
複数のチームが別の技術で開発している組織
部品がブラウザ標準なので、React のチームも Vue のチームも同じ部品を使えます。
-
お問い合わせフォームや計算機などの小さな道具
外のページに貼り付けて使う小さな部品は、軽くて他に影響しにくい作りが向いています。
-
Web Components を学ぶとき
標準のままだと書く量が多いので、Lit を通すと「標準の仕組み+少しの便利機能」という全体像がつかみやすくなります。
向いている場面・向いていない場面
- 向いている:部品を複数の場所で使い回したいとき。技術が混在するサイトや、長く使う共通部品に合います。
- 向いている:軽く始めたいとき。小さなライブラリなので、画面の一部だけに足せます。
- 向いていない:画面全体をまとめて作る大きなアプリ。ルーティングや状態管理を全部そろえたい場合は、React や Vue など、はじめから揃っている道具のほうが楽なことがあります。
上の練習場でサンプルを動かし、値を変えると部品がどう描き直されるか確かめてみてください。
Lit が向いている場面/向かない場面
自分に合うのはどれ? 選び方を見る →ブラウザ標準のWeb Componentsとして書く、フレームワークを問わず混ぜられる部品。
◎ 向いている場面
- ・ ブラウザ標準のCustom Elements(Web Components)として作り、他のフレームワークと混ぜて使いたいとき
- ・ 社内の複数プロジェクト(React/Vue混在)で共通のUI部品を配りたいとき
- ・ Shadow DOMでスタイルを完全にカプセル化したいとき
△ 向かない場面
- ・ 求人量・日本語情報の多さを重視するとき(当サイト内では最も手薄)
- ・ とにかく学習コストを抑えたいとき(Web Components自体の概念理解が要る)
Lit は「ブラウザ標準のカスタム要素」に仕組みを足すだけ。
React や Vue のような独自の仮想 DOM 全体を持ち込むのではなく、customElements という Web 標準の上に、状態管理・再描画・イベントの薄い層を重ねています。
- ①
customElements.define — 要素を「タグ」として登録する
LitElementを継承したクラスを、ハイフンを含むタグ名(例:hello-element)で登録すると、普通の HTML タグと同じように使えるようになります。 - ②
static properties — 変わると再描画される値
static propertiesに宣言した値は「リアクティブプロパティ」になり、変更するたびにrender()が呼び直されます。 - ③
dispatchEvent — 外側にイベントで知らせる
内部の状態が変わったことを親に伝えるときは、props の callback ではなく
CustomEventをdispatchEventするのが Web Components らしいやり方です。
このページについて
ライブラリは cdn.jsdelivr.net から読み込みます。
書いたコードと実行結果は端末内で完結し、外部へ送信しません(送信ゼロ)。
プレビューはサンドボックス化した iframe で、このページや端末のデータには触れません。
🌐 「実行」を押した最初の1回だけ、Lit 3.3.3 を配信元の
cdn.jsdelivr.net から取得します。
これはプログラムを受け取るだけの通信で、書いたコードや実行結果が送られることはありません。
このツールについて
Lit は「ブラウザ標準のカスタム要素」に、状態・再描画・イベントの仕組みを足す軽量なライブラリです。ここでは実際に要素を定義して登録し、画面と console の両方で挙動を確認できます。
ブラウザ内 Lit 3 で カスタム要素の定義・プロパティとイベント・繰り返し描画を体験。customElements.define で登録した要素が普通の HTML タグのように動く様子を確認できます。
主な機能
- 3サンプル(カスタム要素の定義・プロパティとイベント・繰り返し描画)
- iframe 内で lit の ESM を直接 import(親側のコンパイル不要)
- プレビュー+console・停止ボタン
- lit は cdn.jsdelivr.net から初回のみ・送信ゼロ
よくある質問
Q. 入力したコードはサーバーに送られますか?
A. 送られません。Lit の実行はすべてブラウザ内のサンドボックス iframe で完結し、外へ出る通信は Lit 本体のダウンロード(初回のみ)だけです。
Q. customElements.define で登録した要素はどこで使えますか?
A. このプレビュー iframe の中だけです。登録後は普通の HTML タグとして使えます。
Q. static properties の値を変えると何が起きますか?
A. リアクティブなプロパティとして扱われ、変更のたびに render() が呼び直されて画面が更新されます。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。