Basi
Installazione
npm install htmx.org
Come Funziona
HTML-drivenAJAX tramite attributi HTML, senza JS
Swap contenutoIl server restituisce frammenti HTML che htmx sostituisce
ProgressivoMigliora l'HTML standard; degrada con grazia
REST-friendlyFunziona con qualsiasi framework server-side
Attributi
Attributi Richiesta Principali
hx-get="/url"Invia richiesta GET all'URL
hx-post="/url"Invia richiesta POST all'URL
hx-put="/url"Invia richiesta PUT all'URL
hx-patch="/url"Invia richiesta PATCH all'URL
hx-delete="/url"Invia richiesta DELETE all'URL
Attributi di Comportamento
hx-triggerEvento che scatena la richiesta
hx-targetElemento in cui sostituire il contenuto
hx-swapCome sostituire il contenuto della risposta
hx-selectSeleziona un sottoinsieme dell'HTML della risposta
hx-valsAggiunge valori extra alla richiesta
hx-confirmMostra dialogo di conferma prima della richiesta
hx-disableDisabilita l'elaborazione htmx sull'elemento
Trigger
Sintassi dei Trigger
Feed
Modificatori dei Trigger
changedAttiva solo se il valore è cambiato
delay:NsAttende N secondi prima di attivare
throttle:NmsLimita a una volta ogni N ms
onceAttiva solo la prima volta
from:selectorAscolta su un elemento diverso
every NsPolling ogni N secondi
loadAttiva al caricamento dell'elemento
revealedAttiva quando l'elemento scorre nella vista
Target
Selezione del Target
Parole Chiave Target
thisL'elemento stesso (default)
closest <sel>Antenato più vicino corrispondente al selettore
find <sel>Primo discendente corrispondente al selettore
next <sel>Fratello successivo corrispondente al selettore
previous <sel>Fratello precedente corrispondente al selettore
Swapping
Strategie di Swap
innerHTMLSostituisce il contenuto interno (default)
outerHTMLSostituisce l'intero elemento target
afterbeginPrepende dentro il target
beforeendAppende dentro il target
beforebeginInserisce prima del target
afterendInserisce dopo il target
deleteRimuove l'elemento target
noneNessuno swap, solo eventi
Modificatori di Swap
Header
Header di Richiesta (inviati da htmx)
HX-RequestSempre "true" per le richieste htmx
HX-TargetID dell'elemento target
HX-TriggerID dell'elemento che ha scatenato
HX-Trigger-NameNome dell'elemento che ha scatenato
HX-Current-URLURL corrente del browser
HX-PromptRisposta utente da hx-prompt
Header di Risposta (inviati dal server)
HX-RedirectReindirizzamento client-side all'URL
HX-RefreshRicarica completa della pagina se "true"
HX-RetargetSovrascrive hx-target con selettore CSS
HX-ReswapSovrascrive la strategia hx-swap
HX-TriggerScatena eventi client-side
HX-Push-UrlInserisce URL nella cronologia del browser
Eventi
Eventi del Ciclo di Vita
htmx:configRequestPrima della richiesta; modifica params/header
htmx:beforeRequestAppena prima della chiamata AJAX
htmx:afterRequestDopo il completamento della richiesta
htmx:beforeSwapPrima che il contenuto venga sostituito
htmx:afterSwapDopo che il contenuto è stato sostituito
htmx:afterSettleDopo che il DOM si è stabilizzato
htmx:responseErrorIl server ha restituito uno stato di errore
Ascolto degli Eventi
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(); });
Estensioni
Uso delle Estensioni
Estensioni Popolari
json-encCodifica il corpo della richiesta come JSON
loading-statesGestisce classi CSS dello stato di caricamento
head-supportUnisce i tag dalle risposte
preloadPrecarica link al mousedown/hover
sseSupporto Server-Sent Events
wsSupporto WebSocket
response-targetsTarget diversi per risposte di errore
Indicatori
Indicatore di Caricamento
Loading...
CSS Indicatore
.htmx-indicator { display: none; } .htmx-request .htmx-indicator { display: inline; } .htmx-request.htmx-indicator { display: inline; }

htmx aggiunge la classe htmx-request all'elemento durante le richieste

Disabilita Durante la Richiesta

hx-disabled-elt aggiunge l'attributo disabled durante la richiesta

Pattern Comuni
Ricerca Attiva
#results" />
Scroll Infinito
Loading more...
Elimina con Conferma
Modifica Inline
Click to edit this text