本文へスキップ
totonoe.tech

フレームワークを整える

中級

Lit を整える。

= ブラウザ標準のカスタム要素にひと工夫足す——タグとして使えるコンポーネントを作る

Lit が初めての方は、先に そもそも Lit とは・どんな場面で使うか をどうぞ。

サンプルコード(クリックでエディタに挿入)

EDITOR Lit 3.3.3(ESM)
PREVIEW

コンソール

コードを書いて「実行」を押すと、ここに 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の「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

続けて整える

運営サイト

私たちが運営するサイト