A jQuery-first component templating framework.
jqhtml.org · Documentation · npm
Compose logical concepts in your HTML — <User_Card>, <Invoice_Status_Badge> — instead of visual primitives with cryptic class names.
<Define:Hello_World tag="div" class="greeting">
<h1>Hello, <%= this.args.name %>!</h1>
<button @click=this.handle_click>Wave</button>
</Define:Hello_World>
Templates compile at build time to plain JavaScript functions. Components are genuine jQuery objects — this.$ is not a wrapper. There is no virtual DOM, no state-management layer, and no runtime template parsing.
Built as a deliberate alternative to the modern JavaScript ecosystem's complexity and churn. Like jQuery itself: simple, solid, an API that doesn't churn.
| Repo | What it is |
|---|---|
| jqhtml | The core monorepo — runtime, compiler, and SSR |
| jqhtml-vite | Vite plugin |
| jqhtml-esbuild | esbuild plugin |
| jqhtml-laravel | Laravel / Blade integration |
| jqhtml-vscode | VS Code language support for .jqhtml |
@jqhtml/core (runtime, peer dep jQuery ^3.7) · @jqhtml/parser (compiler + jqhtml-compile CLI) · @jqhtml/ssr (server-side rendering)
npm install @jqhtml/core @jqhtml/parser<Define:Name>IS the element — it becomes the DOM node rather than wrapping one.- Deterministic 5-stage lifecycle —
create → render → on_render → load → ready. Children boot in parallel; ready resolves bottom-up. No race conditions. - Incremental scaffolding — undefined components render immediately as placeholder
<div>s, so an entire page can be sketched in semantic tags before a single template exists. - Stale-while-revalidate caching — opt-in localStorage caching makes repeat visits render instantly.
Alpha. It works and is used daily in production, but expect rough edges.
Full documentation: docs.jqhtml.org
MIT — Copyright (c) 2026 HansonXyz