Skip to content

Instantly share code, notes, and snippets.

@kashewnuts
Last active September 8, 2024 17:13
Show Gist options
  • Save kashewnuts/2530b24597cee6dc0b4e1a60d7dd2574 to your computer and use it in GitHub Desktop.
Save kashewnuts/2530b24597cee6dc0b4e1a60d7dd2574 to your computer and use it in GitHub Desktop.

htmxメモ.md

htmxとは

  • Official: </> htmx - high power tools for html
  • HTML Extentionの略。最新バージョンは2.0.0(2024/06/18現在)
  • 属性を記述することでAjax通信、ページの(部分)置き換え、サーバーとの通信(SSE, WebSocket)などができる。
  • JavaScriptヘビーな現代に「こういうのでいいんだよ」を提供してくれるツール

まずここを見る

HTMXには様々な属性があるが、すべてを一度に理解しようとすると大変なので基本の4つを把握する。

  • hx-get: 指定したURLにGETリクエストを送信する属性
  • hx-swap: サーバーから受け取ったコンテンツを対象の要素とどのように交換するのかを指定する属性
  • hx-target: サーバーから受け取ったコンテンツ(HTML/JSON)を、ターゲットとして設定した場所に差し込む属性
  • hx-trigger: 特定のイベントが発生した時に、サーバーにリクエストを送信する属性

HTMXの得意不得意

我々が作るものはほぼHTMXが得意とする When Should You Use Hypermedia?

得意

  • 画像や文書等の情報提供
  • CRUD中心
  • データがセクションに分かれる

不得意

  • エクセルのように要素間のリアルタイムでな依存がある
  • オフラインが必要
  • ゲームのように頻繁な更新が必要

思想やDjangoと組み合わせた場合を含めた状況メモ

  • HTMLファーストなツール。
  • 簡単に動的処理を実現でき、FWに依存しない。Django(Template)とも組み合わせやすい。
    • 一定以上のパフォーマンス、セキュリティ、継続性がある基盤でJavaScriptのチューニングも最小限にして開発速度の向上が期待できる。
  • htmxはこれひとつですべてを提供するものではないので、必要に応じてツールを組み合わせていく。
  • 本格的なJSフレームワーク/ライブラリに移行することなく、少しの柔軟性を必要とする多くのDjangoプロジェクトに適している。
  • Djangoはフルスタックフレームワークなので、それを活用することでフロントエンド側で考慮することを減らすこともできる。
  • サンプルリポジトリを探してみるとAlpine.js/Tailwindと組み合わせている例が多い。
    • スクリプトを外部に置くのではなく、ハイパーメディア内に直接記述することが好まれるアーキテクチャのため。

使い方のイメージ

以下にサンプルや機能一覧があるのでざっと眺めたり使ってみると良い。

公式ドキュメント

サンプルリポジトリ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment