【エイチティーエムエックス】

htmx とは?

最終更新:
💡 HTMLに属性を足して、ページの一部を更新

HTMLのhx-getなどの属性でサーバーにリクエストを送り、返されたHTMLでページの一部を更新するJavaScriptライブラリ。画面更新の処理をHTMLの属性で指定できる。

📌 このページのポイント
画面を更新する、2つの組み立て方SPAの例ブラウザー検索ボタン要求応答サーバーJSONのデータhtmxの例ブラウザー検索ボタン要求応答サーバーHTMLの部品データで画面を作るHTMLを差し込むhtmxもJavaScriptを読み込んで使う
通信方式の例。htmxは、サーバーが返すHTMLで指定した場所を更新する。
ひよこ ひよこ
htmxは、普通のHTMLと何が違うの?
ペンギン先生 ペンギン先生
ページにhtmxのJavaScriptを読み込むと、hx-getなどの属性でサーバーと通信し、返されたHTMLをページの一部に差し込めるよ。ページ全体を読み直さず、検索結果や一覧だけを更新する使い方ができるんだ。
ひよこ ひよこ
Reactなどとは、何が違うの?
ペンギン先生 ペンギン先生
よくあるSPAではJSONを受け取り、ブラウザー側で画面を組み立てる。htmxでは通常、サーバー側でHTMLを作って返すよ。ただしSPAが必ずJSONを使うわけではないし、htmxを使ってもJavaScriptが不要になるわけではないんだ。
ひよこ ひよこ
更新する場所は、どう決めるの?
ペンギン先生 ペンギン先生
例えばボタンにhx-get="/items"とhx-target="#items"を書くと、クリックで一覧を取得し、idがitemsの要素へ結果を入れるよ。既定では、その要素の中身を置き換える。末尾への追加にしたいときはhx-swap="beforeend"などで入れ方も指定するんだ。
ひよこ ひよこ
サーバーは、何を返せばよいの?
ペンギン先生 ペンギン先生
通常は更新する部分のHTMLだよ。サーバーで使う言語やテンプレートの仕組みは選べる。htmx用の更新にJSON APIを必須としないけれど、他の利用者向けのAPIや、認証・入力の確認などのサーバー側の設計まで省けるわけではないよ。
ひよこ ひよこ
どんな画面にも、htmxが向いている?
ペンギン先生 ペンギン先生
検索・フォーム・一覧の部分更新などでは、HTMLを中心に作れるのが特徴だよ。一方、ブラウザー内で複雑な状態を管理する画面では、別のJavaScriptや他の仕組みを組み合わせることもある。実際の操作と通信回数を確認して選ぼう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「htmx」って出てきたら「HTMLの属性で通信と部分更新を指定できるライブラリ」と思えばだいたいOK!
📖 おまけ:英語の意味
「htmx」 = HTMLを拡張するライブラリの名前
💬 HTMLの要素に通信や更新のための属性を足すライブラリだよ。HTML自体の標準機能とは分けて考えよう。

参考資料

← 用語集にもどる