Fundamentos
Instalación
npm install htmx.org
Cómo funciona
HTML-drivenLanzar AJAX desde atributos HTML, sin JS
Intercambio de contenidoEl servidor devuelve fragmentos HTML, htmx los intercambia
ProgresivoMejora HTML estándar; funciona sin JavaScript
REST-friendlyFunciona con cualquier framework del servidor
Atributos
Atributos de solicitud principales
hx-get="/url"Enviar solicitud GET a la URL
hx-post="/url"Enviar solicitud POST a la URL
hx-put="/url"Enviar solicitud PUT a la URL
hx-patch="/url"Enviar solicitud PATCH a la URL
hx-delete="/url"Enviar solicitud DELETE a la URL
Atributos de comportamiento
hx-triggerEvento que activa la solicitud
hx-targetElemento donde se intercambia el contenido
hx-swapCómo intercambiar el contenido de la respuesta
hx-selectSeleccionar un subconjunto del HTML de la respuesta
hx-valsAgregar valores adicionales a la solicitud
hx-confirmMostrar diálogo de confirmación antes de la solicitud
hx-disableDeshabilitar el procesamiento htmx en el elemento
Triggers
Sintaxis de trigger
Feed
Modificadores de trigger
changedSolo activar si el valor cambió
delay:NsEsperar N segundos antes de activar
throttle:NmsLimitar a una vez por N ms
onceActivar solo la primera vez
from:selectorEscuchar en un elemento diferente
every NsSondear cada N segundos
loadActivar al cargar el elemento
revealedActivar cuando el elemento entra en la vista
Targets
Selección de target
Palabras clave de target
thisEl propio elemento (por defecto)
closest <sel>Ancestro más cercano que coincide con el selector
find <sel>Primer descendiente que coincide con el selector
next <sel>Hermano siguiente que coincide con el selector
previous <sel>Hermano anterior que coincide con el selector
Intercambio
Estrategias de intercambio
innerHTMLReemplazar contenido interno (por defecto)
outerHTMLReemplazar el elemento target completo
afterbeginInsertar al inicio dentro del target
beforeendInsertar al final dentro del target
beforebeginInsertar antes del target
afterendInsertar después del target
deleteEliminar el elemento target
noneSin intercambio, solo disparar eventos
Modificadores de intercambio
Cabeceras
Cabeceras de solicitud (enviadas por htmx)
HX-RequestSiempre "true" para solicitudes htmx
HX-TargetID del elemento target
HX-TriggerID del elemento que disparó la solicitud
HX-Trigger-NameNombre del elemento que disparó la solicitud
HX-Current-URLURL actual del navegador
HX-PromptRespuesta del usuario desde hx-prompt
Cabeceras de respuesta (enviadas por el servidor)
HX-RedirectRedirección del lado del cliente a la URL
HX-RefreshRecarga completa de página si es "true"
HX-RetargetAnular hx-target con selector CSS
HX-ReswapAnular estrategia hx-swap
HX-TriggerDisparar eventos del lado del cliente
HX-Push-UrlInsertar URL en el historial del navegador
Eventos
Eventos del ciclo de vida
htmx:configRequestAntes de la solicitud; modificar params/cabeceras
htmx:beforeRequestJusto antes de la llamada AJAX
htmx:afterRequestDespués de que la solicitud se completa
htmx:beforeSwapAntes de intercambiar el contenido
htmx:afterSwapDespués de intercambiar el contenido
htmx:afterSettleDespués de que el DOM se estabiliza tras el intercambio
htmx:responseErrorEl servidor devolvió estado de error
Escuchar eventos
document.body.addEventListener("htmx:afterSwap", (e) => { console.log("Swapped:", e.detail.target); }); // Cancelar una solicitud document.body.addEventListener("htmx:configRequest", (e) => { if (!confirm("Proceed?")) e.preventDefault(); });
Extensiones
Usar extensiones
Extensiones populares
json-encCodificar el cuerpo de la solicitud como JSON
loading-statesGestionar clases CSS de estado de carga
head-supportFusionar etiquetas de las respuestas
preloadPrecargar enlaces al pulsar/pasar el ratón
sseSoporte de Server-Sent Events
wsSoporte de WebSocket
response-targetsDiferentes targets para respuestas de error
Indicadores
Indicador de carga
Loading...
CSS del indicador
.htmx-indicator { display: none; } .htmx-request .htmx-indicator { display: inline; } .htmx-request.htmx-indicator { display: inline; }

htmx agrega la clase htmx-request al elemento durante las solicitudes

Deshabilitar durante la solicitud

hx-disabled-elt agrega el atributo disabled durante la solicitud

Patrones comunes
Búsqueda activa
#results" />
Scroll infinito
Loading more...
Eliminar con confirmación
Edición en línea
Click to edit this text