Dasar
Instalasi
npm install htmx.org
Cara Kerja
HTML-drivenKirim AJAX dari atribut HTML, tanpa JS
Swap kontenServer mengembalikan fragment HTML, htmx menukarnya
ProgressiveMemperkaya HTML standar; degradasi dengan baik
REST-friendlyBekerja dengan framework server-side apa pun
Atribut
Atribut Request Utama
hx-get="/url"Kirim request GET ke URL
hx-post="/url"Kirim request POST ke URL
hx-put="/url"Kirim request PUT ke URL
hx-patch="/url"Kirim request PATCH ke URL
hx-delete="/url"Kirim request DELETE ke URL
Atribut Perilaku
hx-triggerEvent yang memicu request
hx-targetElemen tujuan penukaran konten
hx-swapCara menukar konten respons
hx-selectPilih subset dari HTML respons
hx-valsTambahkan nilai ekstra ke request
hx-confirmTampilkan dialog konfirmasi sebelum request
hx-disableNonaktifkan pemrosesan htmx pada elemen
Trigger
Sintaks Trigger
Feed
Modifier Trigger
changedHanya picu jika nilai berubah
delay:NsTunggu N detik sebelum picu
throttle:NmsBatasi satu kali per N ms
oncePicu hanya satu kali
from:selectorDengarkan di elemen berbeda
every NsPoll setiap N detik
loadPicu saat elemen dimuat
revealedPicu saat elemen terlihat di layar
Target
Pemilihan Target
Kata Kunci Target
thisElemen itu sendiri (default)
closest <sel>Ancestor terdekat yang cocok dengan selector
find <sel>Keturunan pertama yang cocok dengan selector
next <sel>Sibling berikutnya yang cocok dengan selector
previous <sel>Sibling sebelumnya yang cocok dengan selector
Swapping
Strategi Swap
innerHTMLGanti konten dalam (default)
outerHTMLGanti seluruh elemen target
afterbeginTambahkan di awal dalam target
beforeendTambahkan di akhir dalam target
beforebeginSisipkan sebelum target
afterendSisipkan setelah target
deleteHapus elemen target
noneTidak ada swap, hanya picu event
Modifier Swap
Header
Header Request (dikirim oleh htmx)
HX-RequestSelalu "true" untuk request htmx
HX-TargetID elemen target
HX-TriggerID elemen yang memicu
HX-Trigger-NameNama elemen yang memicu
HX-Current-URLURL saat ini di browser
HX-PromptRespons pengguna dari hx-prompt
Header Response (dikirim oleh server)
HX-RedirectRedirect sisi client ke URL
HX-RefreshRefresh halaman penuh jika "true"
HX-RetargetGanti hx-target dengan CSS selector
HX-ReswapGanti strategi hx-swap
HX-TriggerPicu event sisi client
HX-Push-UrlPush URL ke history browser
Event
Event Siklus Hidup
htmx:configRequestSebelum request; ubah params/header
htmx:beforeRequestTepat sebelum panggilan AJAX
htmx:afterRequestSetelah request selesai
htmx:beforeSwapSebelum konten ditukar
htmx:afterSwapSetelah konten ditukar
htmx:afterSettleSetelah DOM stabil dari swap
htmx:responseErrorServer mengembalikan status error
Mendengarkan Event
document.body.addEventListener("htmx:afterSwap", (e) => { console.log("Swapped:", e.detail.target); }); // Cancel a request document.body.addEventListener("htmx:configRequest", (e) => { if (!confirm("Proceed?")) e.preventDefault(); });
Extension
Menggunakan Extension
Extension Populer
json-encEncode body request sebagai JSON
loading-statesKelola class CSS loading state
head-supportGabungkan tag dari respons
preloadPreload link saat mousedown/hover
sseDukungan Server-Sent Events
wsDukungan WebSocket
response-targetsTarget berbeda untuk respons error
Indikator
Indikator Loading
Loading...
CSS Indikator
.htmx-indicator { display: none; } .htmx-request .htmx-indicator { display: inline; } .htmx-request.htmx-indicator { display: inline; }

htmx menambahkan class htmx-request ke elemen selama request

Nonaktifkan Selama Request

hx-disabled-elt menambahkan atribut disabled selama request

Pola Umum
Pencarian Aktif
#results" />
Infinite Scroll
Loading more...
Hapus dengan Konfirmasi
Edit Inline
Klik untuk mengubah teks ini