TECH BLOG
エクスクリエ
エクスクリエ

htmxでウェブ開発をシンプルに

Cover Image for htmxでウェブ開発をシンプルに
目次

    こんにちは! 今回の記事担当の TERA です。

    JavaScript の記述をせずに、HTML をそのまま使ってモダンな開発ができるようになるライブラリの紹介です。

    htmx とは

    htmx が提供する様々な属性を HTML に記述することでシンプルなコードでサーバーサイドとの非同期的な通信が可能になります。

    使い方

    CDN から読み込むだけで簡単に使えるようになります

    <script src="https://unpkg.com/htmx.org@1.9.6"></script>
    

    コード例

    /users のエンドポイントからユーザーの一覧を返すようになっているとします

    JavaScript を使ってユーザー一覧を取得し、HTMLに表示する例です。

    <body>
        <h1>ユーザー一覧</h1>
        <button id="fetchUsers">ユーザーを取得</button>
        <ul id="user-list"></ul>
    
        <script>
            const fetchUsersButton = document.getElementById("fetchUsers");
            const userList = document.getElementById("user-list");
    
            fetchUsersButton.addEventListener("click", () => {
                fetch("users")
                    .then((response) => response.json())
                    .then((data) => {
                        const usersHTML = data.map((user) => `
                            <li><b>${user.name}</b> (${user.email})</li>
                        `).join("");
                        userList.innerHTML = usersHTML;
                    })
                    .catch((error) => {
                        console.error("ユーザーの取得に失敗しました。", error);
                    });
            });
        </script>
    </body>
    

    これを htmx で置き換えるとこうなります

    <!DOCTYPE html>
    <html>
    <head>
        <title>ユーザー一覧</title>
        <!-- htmxライブラリの読み込み -->
        <script src="https://cdn.jsdelivr.net/npm/htmx.org@1.6.0/dist/htmx.js"></script>
    </head>
    <body>
        <h1>ユーザー一覧</h1>
        <button hx-get="/users" hx-trigger="click" hx-target="#user-list">
            ユーザーを取得
        </button>
        <ul id="user-list"></ul>
    </body>
    </html>
    

    HTML のタグ要素に記述するだけで同じことが実現できます

    まとめ

    Ajax の例だけでなく他にも色々な使い方ができるので気になった方は公式サイトを参考にして試してみてください

    私たちは積極的に採用活動をしております。
    https://www.excrie.co.jp/recruit/

    Companies

    エクスクリエ
    クロス・マーケティンググループ
    メタサイト
    クロス・コミュニケーション

    Tags