nd power of hypertext. htmx gives you access to AJAX, CSS Transitions, WebSockets and Server Sent Events directly in HTML, using attributes, so you can build modern user interfaces with the simplicity a
HTML Over the Wire
Scott C. Krause | Saturday, Aug 5, 2023
What is HTML Over the Wire and how can it help me deliver a solution?
HTML Over The Wire means that HTML, instead of JSON, is transported between the client and the server / API. Considered to be a simpler approach when compared to popular bloated reactive frameworks.
Is HTMX worth the effort to learn as a pragmatic skill?
Yes, depending on what your role is you might find opportunities to build a quick solution with a minimum framework. This is good for pre-sales interactive prototypes, proof-of-concepts, tutorials, or online utilities. Any project that requires a quick turnaround and minimal learning curve, because you probably already know HTML well. If your skills are more presentational UX design you can focus on the visual aesthetic interaction without much investment in asynchronous server communication.
Can I build a complex SPA using only HTMX?
Yes, you can provide a complete single page web app experience with HTMX. However you will probably want to sprinkle some JavaScript to address the edge cases, such as low-level browser APIs (local storage, Canvas, CSS Painter, offline first, Web Audio, JWT, or WASM), depending on the problem that you are solving. To be clear, I am suggesting that you may need vanilla JS. I am not suggesting that you will need a reactive framework.
What JavaScript libraries work well with HTMX?
There are a few JS frameworks that embrace the Low Code HTML first minimalist HTMX philosophy. Specifically AlpineJS, Django Sockpuppet, Hotwire | Turbo | Stimulus | Strada, HTMX, Laravel Livewire, Neodigm 55, Phoenix LiveView, Structured Page Fragments (SPF), Turbo / Hotwire, Unpoly and Vanilla JS.
alpineapihotwjs
alpineapihotwjs
Alpine.js chrome.google.com
alpineapicodepenhotwjs
Alpine.js codepen.io
alpineapihotwjs
Alpine.js discord.com
alpineapigithotwjs
Alpine.js gist.github.com
alpineapigithotwjs
Alpine.js github.blog
alpineapigithotwjs
Alpine.js github.com Search
alpineapigithotwjs
Alpine.js github.com Topics
alpineapigithotwjs
Alpine.js github.com Trending
alpineapihotwjs
Alpine.js hackernoon.com
alpineapihotwjs
Alpine.js hn.algolia.com
alpineapihotwjs
Alpine.js meta.stackexchange.com
alpineapihotwjs
Alpine.js podcasts.google.com
alpineapihotwjs
Alpine.js stackoverflow.com
alpineapihotwjs
Alpine.js stackoverflow.com
alpineapihotwjs
Alpine.js web.dev
alpineapihotwjs
Alpine.js www.infoq.com
alpineapihotwjs
Alpine.js www.linkedin.com
alpineapihotwjsnpm
Alpine.js www.npmjs.com
alpineapihotwjs
Alpine.js www.producthunt.com
alpineapihotwjs
Alpine.js www.reddit.com
alpineapihotwjsvideo
Alpine.js www.youtube.com
hotwhtmlturbo
HTML Hotwire alistapart.com
hotwhtmlturbo
HTML Hotwire bestofjs.org
hotwhtmlturbo
HTML Hotwire chrome.google.com
codepenhotwhtmlturbo
HTML Hotwire codepen.io
githotwhtmlturbo
HTML Hotwire gist.github.com
githotwhtmlturbo
HTML Hotwire github.blog
githotwhtmlturbo
HTML Hotwire github.com trending
githotwhtmlturbo
HTML Hotwire github.com search
githotwhtmlturbo
HTML Hotwire github.com blog
hotwhtmlturbo
HTML Hotwire hackernoon.com
hotwhtmlturbo
HTML Hotwire hn.algolia.com
hotwhtmlturbo
HTML Hotwire meta.stackexchange.com
hotwhtmlturbo
HTML Hotwire podcasts.google.com
hotwhtmlturbo
HTML Hotwire stackoverflow.com
hotwhtmlturbo
HTML Hotwire stackoverflow.com
hotwhtmlturbo
HTML Hotwire web.dev
hotwhtmlturbo
HTML Hotwire www.infoq.com
hotwhtmlturbo
HTML Hotwire www.linkedin.com
hotwhtmlnpmturbo
HTML Hotwire www.npmjs.com
hotwhtmlturbo
HTML Hotwire www.producthunt.com
hotwhtmlturbo
HTML Hotwire www.reddit.com
hotwhtmlturbovideo
HTML Hotwire www.youtube.com
apihotwhtml
HTMX bestofjs.org
apihotwhtml
HTMX chrome.google.com
tech
apicodepenhotwhtml
HTMX codepen.io
tech
apihotwhtml
HTMX discord.com
apigithotwhtml
HTMX gist.github.com
tech
apigithotwhtml
HTMX github.blog
apigithotwhtml
HTMX github.com Search
apigithotwhtml
HTMX github.com Topics
apigithotwhtml
HTMX github.com Trending
apihotwhtml
HTMX hackernoon.com
apihotwhtml
HTMX hn.algolia.com
apihotwhtml
HTMX meta.stackexchange.com
apihotwhtml
HTMX podcasts.google.com
apihotwhtml
HTMX stackoverflow.com
apihotwhtml
HTMX stackoverflow.com
tech
apihotwhtml
HTMX web.dev
apihotwhtml
HTMX www.infoq.com
apihotwhtml
HTMX www.linkedin.com
apihotwhtmlnpm
HTMX www.npmjs.com
apihotwhtml
HTMX www.producthunt.com
apihotwhtml
HTMX www.reddit.com
apihotwhtmlvideo
HTMX www.youtube.com
Dark Scheme Implementation
// Desc: Listen to the OS for user preference
// but override with a UI toggle.
/* ______ __ ____ ____ __
|_ _ `. [ | _ |_ \ / _| | ]
| | `. \ ,--. _ .--. | | / ] | \/ | .--. .--.| | .---.
| | | |`'_\ : [ `/'`\]| '' < | |\ /| | / .'`\ \/ /'`\' |/ /__\\
_| |_.' /// | |, | | | |`\ \ _| |_\/_| |_| \__. || \__/ || \__.,
|______.' \'-;__/[___] [__| \_] |_____||_____|'.__.' '.__.;__]'.__.' User Prefs */
let doPrefersReducedMotion = function( bMotion ){// Stop 3D rotation
o3Config.controls.autoRotate = !bMotion;
}
let doPrefersColorScheme = function( bScheme ){ // UI | OS Semaphore
document.body.dataset.n55AmpmTheme = ((bScheme) ? "dark" : "light"); // 🌙 / ☀️
}
// Capture the prefers media queries
const mqPrefReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)");
const mqPrefColorScheme = window.matchMedia("(prefers-color-scheme: dark)");
doPrefersReducedMotion( (mqPrefReducedMotion && mqPrefReducedMotion.matches) );
doPrefersColorScheme( (mqPrefColorScheme && mqPrefColorScheme.matches) );
// listen to changes in the media query's value
mqPrefReducedMotion.addEventListener("change", () => {
doPrefersReducedMotion( mqPrefReducedMotion.matches );
});
mqPrefColorScheme.addEventListener("change", () => {
doPrefersColorScheme( mqPrefColorScheme.matches );
});
/* Dark Mode begin */
/*@media (prefers-color-scheme: dark) {*/
body[data-n55-ampm-theme='dark'] [role='main'] {
background: linear-gradient(to right, #5A5852, #c2c2c2, #5A5852)
}
body[data-n55-ampm-theme='dark'] .h-bg__stripe, body[data-n55-ampm-theme='dark'] .l-caro-design > article, body[data-n55-ampm-theme='dark'] article.l-caro-design {
background: repeating-linear-gradient(45deg,#242424,#242424 24px,#444 24px,#444 48px);
}
body[data-n55-ampm-theme='dark'] section.pfmf-grid > div > article {
border: solid 1px #888;
border-top: solid 2px #888;
box-shadow: 0px 2px 6px -2px rgba(164,164,164,0.6);
background-color: #242424;
}
body[data-n55-ampm-theme='dark'] .readable__doc { color: #fff; }
body[data-n55-ampm-theme='dark'] .readable__caption { color: #fff; }
body[data-n55-ampm-theme='dark'] .h-vect-line-art { stroke: #fff;}
/*}*/
/* Dark Mode end */
Alpine.js bestofjs.org