Básico
Instalação
npm install htmx.org
Como Funciona
HTML-drivenEmitir AJAX de atributos HTML, sem JS necessário
Swap contentServidor retorna fragmentos HTML, htmx os troca
ProgressiveAprimora HTML padrão; degrada graciosamente
REST-friendlyFunciona com qualquer framework server-side
Atributos
Atributos de Requisição Principais
hx-get="/url"Emitir requisição GET para URL
hx-post="/url"Emitir requisição POST para URL
hx-put="/url"Emitir requisição PUT para URL
hx-patch="/url"Emitir requisição PATCH para URL
hx-delete="/url"Emitir requisição DELETE para URL
Atributos de Comportamento
hx-triggerEvento que aciona a requisição
hx-targetElemento para trocar o conteúdo
hx-swapComo trocar o conteúdo de resposta
hx-selectSelecionar subconjunto do HTML de resposta
hx-valsAdicionar valores extras à requisição
hx-confirmMostrar diálogo de confirmação antes da requisição
hx-disableDesabilitar processamento htmx no elemento
Triggers
Sintaxe de Trigger
Feed
Modificadores de Trigger
changedAcionar somente se o valor mudou
delay:NsAguardar N segundos antes de acionar
throttle:NmsLimitar a uma vez por N ms
onceAcionar apenas na primeira vez
from:selectorOuvir em um elemento diferente
every NsFazer polling a cada N segundos
loadAcionar no carregamento do elemento
revealedAcionar quando o elemento rola para a visualização
Targets
Seleção de Target
Palavras-chave de Target
thisO próprio elemento (padrão)
closest <sel>Ancestral mais próximo que corresponde ao seletor
find <sel>Primeiro descendente que corresponde ao seletor
next <sel>Próximo irmão que corresponde ao seletor
previous <sel>Irmão anterior que corresponde ao seletor
Swap
Estratégias de Swap
innerHTMLSubstituir conteúdo interno (padrão)
outerHTMLSubstituir todo o elemento alvo
afterbeginInserir no início do target
beforeendAdicionar ao final do target
beforebeginInserir antes do target
afterendInserir após o target
deleteRemover elemento alvo
noneSem swap, apenas acionar eventos
Modificadores de Swap
Headers
Headers de Requisição (enviados pelo htmx)
HX-RequestSempre "true" para requisições htmx
HX-TargetID do elemento alvo
HX-TriggerID do elemento acionador
HX-Trigger-NameNome do elemento acionador
HX-Current-URLURL atual do navegador
HX-PromptResposta do usuário ao hx-prompt
Headers de Resposta (enviados pelo servidor)
HX-RedirectRedirecionamento client-side para URL
HX-RefreshAtualização completa da página se "true"
HX-RetargetSubstituir hx-target por seletor CSS
HX-ReswapSubstituir estratégia hx-swap
HX-TriggerAcionar eventos client-side
HX-Push-UrlInserir URL no histórico do navegador
Eventos
Eventos de Ciclo de Vida
htmx:configRequestAntes da requisição; modificar params/headers
htmx:beforeRequestLogo antes da chamada AJAX
htmx:afterRequestApós a requisição ser concluída
htmx:beforeSwapAntes do conteúdo ser trocado
htmx:afterSwapApós o conteúdo ser trocado
htmx:afterSettleApós o DOM se estabilizar após o swap
htmx:responseErrorServidor retornou status de erro
Ouvindo Eventos
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(); });
Extensões
Usando Extensões
Extensões Populares
json-encCodificar corpo da requisição como JSON
loading-statesGerenciar classes CSS de estado de carregamento
head-supportFundir tags das respostas
preloadPré-carregar links no mousedown/hover
sseSuporte a Server-Sent Events
wsSuporte a WebSocket
response-targetsDiferentes targets para respostas de erro
Indicadores
Indicador de Carregamento
Loading...
CSS do Indicador
.htmx-indicator { display: none; } .htmx-request .htmx-indicator { display: inline; } .htmx-request.htmx-indicator { display: inline; }

htmx adiciona a classe htmx-request ao elemento durante requisições

Desabilitar Durante Requisição

hx-disabled-elt adiciona o atributo disabled durante a requisição

Padrões Comuns
Busca Ativa
#results" />
Scroll Infinito
Loading more...
Excluir com Confirmação
Edição Inline
Click to edit this text