- Un microframework HTML minimalista que permite crear interfaces web modulares y dinámicas de forma tan simple como con HTML plano
- Hace exactamente una sola cosa: puede cargar recursos HTML desde cualquier elemento de la página
- Al hacer posible actualizar solo una parte de la página, permite reemplazar fragmentos de la página
- Con un tamaño total de 166 bytes, usa solo HTML puro, no tiene dependencias y no requiere bundles de JS, backend, atributos especiales, DSL ni elementos personalizados
- Interactúa con el DOM real y no usa VDOM, listeners de clic, AJAX,
fetch, etc.
- Basta con agregar un snippet HTML en línea hecho con
iframe
<iframe hidden name=htmz onload="setTimeout(()=>document.querySelector(this.contentWindow.location.hash||null)?.replaceWith(...this.contentDocument.body.childNodes))"></iframe>
Uso básico
- Para usar htmz, se necesita un hipervínculo (o formulario) con un atributo
href que apunte a la URL del recurso (o action en el formulario) y un selector de ID de destino.
- Parece que reutiliza el fragmento de la URL como selector de ID de destino, pero en este contexto el fragmento de la URL no se usa para otra cosa, así que se reutiliza.
¿Qué hace exactamente?
- htmz ofrece una sola función: permitir cargar recursos HTML dentro de cualquier elemento de la página.
- La idea no es nueva, y dividir una página web en partes que se recargan de forma independiente existe desde mediados de los años 90.
- htmz es una generalización de los frames HTML, y puede cargar recursos HTML en cualquier elemento de la página.
Uso avanzado
- Actualmente en HTML5, solo los elementos
a y form pueden apuntar a htmz e invocarlo.
- Se puede usar el elemento
base para establecer htmz como destino predeterminado para todos los enlaces relativos.
- Si prefieres usar el valor real del destino, se puede usar un hack para escribir el selector de ID de destino directamente en el propio atributo
target.
Scripting / interactividad
- Si se necesita más interactividad, se puede usar JavaScript, el lenguaje de scripting que acompaña a htmz.
- htmz no excluye escribir JS ni usar bibliotecas de UI, y con htmz todavía se pueden enviar valores de formularios mediante formularios HTTP normales.
Escalabilidad
- Si se necesitan selectores avanzados, manejo de errores, múltiples destinos, etc., los desarrolladores pueden extenderlo según sus necesidades.
FAQ
- htmz es un
iframe con nombre "htmz"; se invoca cargando una URL a través de ese iframe.
- htmz actúa como destino proxy y entrega la respuesta al destino especificado.
- htmz no analiza continuamente el DOM, no busca atributos o sintaxis especiales ni adjunta listeners al DOM.
- htmz es un microframework HTML que usa la mínima cantidad posible de JS.
- htmz es un snippet, y significa 'Html with Targeted Manipulation Zones'.
- Este proyecto comenzó como una reacción a htmx, y fue un experimento para comprobar si era posible implementar en la web actual la funcionalidad de cargar-enlazar-destinar sin usar htmx.
- A pesar de su tamaño diminuto, htmz se siente potente, y su principal limitación es que solo puede tener un único destino por respuesta.
Opinión de GN⁺
- Enfoque innovador: htmz ofrece un enfoque innovador para reducir la complejidad de los frameworks en el desarrollo web y construir interfaces web usando HTML puro. Esto implica una forma de desarrollo web accesible incluso para ingenieros de software principiantes.
- Equilibrio entre rendimiento y simplicidad: su tamaño extremadamente liviano de 166 bytes y su estructura sin dependencias pueden mejorar mucho el rendimiento de una página web. Además, ofrece la simplicidad de poder crear páginas web efectivas sin tener que aprender frameworks complejos de JavaScript.
- El futuro del desarrollo web: htmz ofrece una perspectiva interesante sobre el futuro del desarrollo web. Muestra cómo la evolución de los estándares y tecnologías web puede dar a los desarrolladores herramientas más simples y eficientes.
3 comentarios
Guau, esto está bien ingenioso jajaja. En el enlace dice que no es ni una librería ni un framework, sino solo un snippet... jaja
Uso avanzado: en el HTML5 actual, parece que solo los elementos
yno tienen aplicado el escape de HTML En el HTML5 actual, parece que solo los elementosyOpiniones de Hacker News
Resumen del primer comentario:
Resumen del segundo comentario:
Resumen del tercer comentario:
Resumen del cuarto comentario:
Resumen del quinto comentario:
Resumen del sexto comentario:
this.en los event listeners inline para reducir aún más el tamaño del código.Resumen del séptimo comentario:
target, podría no degradarse con elegancia como htmx cuando JS está desactivado.Resumen del octavo comentario:
<slot>de esta manera es una mala idea.<slot>tiene un comportamiento muy específico y, haga lo que haga la librería, es reemplazado por los hijos del elemento host.<output>.Resumen del noveno comentario:
Resumen del décimo comentario:
pushStatede forma predeterminada para que el botón de volver funcione.