Skip to content

Ekstensi HTMX

Published: at 01.03

HTMX menawarkan sebuah mekanisme ekstensi yang sangat berguna untuk menyesuaikan dan memperluas fungsionalitas bawaan library ini. Dengan memanfaatkan ekstensi, Anda bisa menambahkan fitur-fitur baru, mengubah perilaku default, serta mengintegrasikan library atau tool pihak ketiga ke dalam ekosistem HTMX.

Ekstensi dalam HTMX didefinisikan menggunakan JavaScript dan kemudian dihubungkan ke elemen HTML melalui atribut khusus bernama hx-ext. Atribut ini menerima satu atau beberapa nama ekstensi yang dipisahkan dengan koma.

10.1. Memanfaatkan Ekstensi Bawaan HTMX

Kabar baiknya, HTMX sudah menyertakan beberapa ekstensi siap pakai yang bisa langsung Anda gunakan dalam proyek. Ekstensi-ekstensi ini mencakup fungsionalitas umum yang sering dibutuhkan saat pengembangan aplikasi web.

Beberapa ekstensi bawaan yang populer antara lain:

  1. json-enc: Mengubah encoding default request dari x-www-form-urlencoded menjadi format JSON.

  2. morphdom-swap: Menggunakan library morfdom sebagai mekanisme untuk melakukan penggantian (swap) konten dalam HTMX.

  3. alpine-morph: Memungkinkan integrasi dengan Alpine.js dan memanfaatkan fitur morph dari library tersebut untuk operasi swap.

  4. client-side-templates: Menambahkan dukungan untuk pemrosesan template sisi klien berdasarkan response JSON dari server.

  5. path-deps: Mendefinisikan dependensi antar elemen berdasarkan path, mirip dengan fitur di intercooler.js.

Selain itu, masih ada banyak ekstensi bawaan lainnya yang bisa Anda eksplorasi. Lihat halaman dokumentasi ekstensi HTMX untuk daftar lengkap dan penjelasan detailnya.

Untuk menggunakan ekstensi bawaan, cukup tambahkan atribut hx-ext pada elemen yang diinginkan dan sebutkan nama ekstensinya. Contoh:

<div hx-ext="json-enc">
  <button hx-post="/api/komentar">Kirim dalam Format JSON</button>
</div>

Pada contoh di atas, ekstensi json-enc digunakan agar data form dikirimkan dalam format JSON saat tombol diklik.

10.2. Membuat Ekstensi Kustom

Selain memakai ekstensi bawaan, Anda juga bisa membuat ekstensi kustom sesuai kebutuhan spesifik aplikasi Anda. Ekstensi kustom dibuat dengan menuliskan kode JavaScript dan meregistrasikannya ke HTMX.

Beberapa ide untuk ekstensi kustom yang mungkin berguna:

Untuk panduan lengkap tentang cara membuat ekstensi kustom, silakan merujuk ke dokumentasi pengembangan ekstensi di situs HTMX.

10.3. Contoh Penggunaan Ekstensi

Berikut beberapa contoh lain penggunaan ekstensi dalam HTMX:

  1. Memuat data dalam format JSON dan menampilkannya dengan template sisi klien:
<div hx-ext="client-side-templates">
  <button hx-get="/api/produk" hx-template="daftar_produk">
    Muat Daftar Produk
  </button>
  <template id="daftar_produk">
    <ul>
      {{#each produk}}
      <li>{{nama}} - {{harga}}</li>
      {{/each}}
    </ul>
  </template>
</div>
  1. Mengirim form dengan encoding JSON dan menampilkan indikator loading:
<form
  hx-ext="json-enc, loading-states"
  hx-post="/api/kontak"
  hx-target="#response"
>
  ...
  <button>Kirim</button>
</form>

<div id="response"></div>
  1. Memuat konten secara dinamis berdasarkan path dan dependensi:
<div hx-ext="path-deps">
  <a
    hx-get="/artikel/{{id}}"
    hx-deps="/api/kategori, /api/penulis/{{penulis_id}}"
  >
    Baca Artikel
  </a>
</div>

Contoh-contoh di atas hanya sebagian kecil dari kemungkinan yang bisa Anda wujudkan dengan ekstensi HTMX. Silakan bereksplorasi dan bereksperimen untuk menemukan kombinasi yang paling cocok dengan kebutuhan proyek Anda.

Tambahkan ekstensi ke toolbelt Anda dan rasakan bagaimana ekstensi bisa menyederhanakan workflow pengembangan aplikasi web modern. Dengan HTMX dan ekstensinya, Anda bisa tetap produktif tanpa meninggalkan kenyamanan HTML dan menulis lebih sedikit JavaScript.

Semoga artikel ini memberikan gambaran yang lebih jelas tentang ekstensi dalam HTMX. Jika ada pertanyaan lebih lanjut, jangan ragu untuk ajukan. Selamat mengeksplorasi dunia HTMX yang menakjubkan!