HTMX を使って “SPA” を構築する #3 – hx-push-url の使用

はじめに

Olivia は Python 愛好家で、知識を共有し、役立つチュートリアルを作成することが大好きです。この記事では、軽量なライブラリである HTMX を使って SPA スタイルのアプリケーションを構築する方法をご紹介します。このチュートリアルを通して、複雑な SPA フレームワークを使うことなく、フロントエンドのルーティングと、ブラウザの URL の更新を実装する方法を学びます。

YouTube でこの動画を視聴する

アプリケーションの初期設定

この動画では、ホームページのテンプレートに初期データを表示する基本的なアプリ設定から始まります。目標は、ホームページと個別の記事ページ間のフロントエンドルーティングを実装することです。講演者は、記事リンクをクリックしたときに ‘hx-get’ 属性を使ってAJAX リクエストを送信し、新しい HTML テンプレートを取得する方法を説明しています。これにより、ページ全体を更新することなく新しいコンテンツを読み込むことができ、スムーズで反応性の高いユーザー体験を実現できます。

サーバー側での記事リクエストの処理

講演者は、個別の記事ページのサーバーサイドのルートハンドラーを作成します。ルートパラメータを使って要求された記事を識別し、その記事データをテンプレート変数として渡す ‘article’ ビューを描画します。’article’ ビューは、メインのレイアウトを拡張し、記事の名称と本文を表示します。

URL とブラウザ履歴の更新

講演者は ‘hx-push-url’ 属性を紹介します。これにより、記事リンクをクリックしたときに、ブラウザの履歴に新しい URL をプッシュできます。これによって、表示中の記事に応じてアドレスバーの URL が更新され、ブラウザの戻るボタンを使って記事ページから元のホームページに戻れるようになります。講演者はこの機能を実演し、記事リンクをクリックするとURL が更新され、戻るボタンで元のページに移動できることを示しています。

ホームページへのリンク

講演者は記事ページに “すべての記事に戻る” リンクを追加し、同じ HTMX の手法を使ってホームページのテンプレートをリクエストします。’hx-get’ と ‘hx-push-url’ 属性を使って、リクエストをトリガーし、URL を適切に更新しています。講演者は、HTMX を使えば複雑な SPA フレームワークを必要とせずにフロントエンドのルーティングを実装できると結論付けています。

まとめ

この記事では、HTMX の力を活用してSPAスタイルのアプリケーションを構築する方法を学びました。’hx-get’ と ‘hx-push-url’ 属性を活用することで、ページ全体を更新することなくユーザーを快適に移動させる、反応性の高いユーザー体験を実現できます。この手法は、従来のSPAフレームワークよりもシンプルで軽量であり、幅広いウェブプロジェクトに適しています。

ポイント:

  • HTMX は HTML にダイナミックな機能を追加する軽量なライブラリです
  • ‘hx-get’ を使ってAJAXリクエストで新しいHTMLテンプレートを取得します
  • ‘hx-push-url’ を使ってナビゲーション時にブラウザのURLと履歴を更新します
  • 複雑なSPAフレームワークなしでフロントエンドのルーティングを実装できます
  • ページ全体の更新を避けることで、スムーズで反応性の高いユーザー体験を提供できます
上部へスクロール