演示
十一件现场,件件真实运行。前七件是超文本的经典套路,后四件专演 v4 招牌新特性——每一个「演示台」都标注所用属性,看懂一处,看懂全局。
点击计数
README 快速开始的完全体:hx-post 把计数交给服务器,响应就是下一次点击的按钮本身。
自动补全
输入属性名,服务器返回候选列表:hx-get + keyup changed delay:400ms,一个搜索框的全部家当。
不发起请求;候选列表由服务器按 q 现场过滤生成——htmx.org 官网文档搜索即此套路。点击加载 · 局部刷新
点击「换一条摘录」,服务器从语录池随机取一条,只换 #sig-text 一处——页面纹丝不动,角落焕然一新。
—— 尚未获取 ——
settle:600ms 让 .htmx-settling 朱砂底驻留片刻——换入的动效就这么「点」出来。无限瀑布
revealed 触发 + afterend 追加:每张卡片滚进视口,就顺手把下一张拉进来。
load 引入,此后每张自带 revealed 钩子——列表自己把下一张拽进来,无一行框架代码。行内编辑
点条目变输入框(服务器换回表单),回车提交 hx-post(服务器换回静态文本)——经典 mustache 变奏,纸墨版:
blur 或 Enter 提交后,世界恢复平静。服务器驱动弹窗
htmx 不弹「modal 组件」,弹的是一段 HTML。hx-on 收 htmx 事件、dialog 元素原生 showModal():
全属性烟花
最后放一个「全家福」:hx-get 取一段随机 ASCII 烟花、click 触发、指示器转圈、swap 延迟退让、settle 补色、scroll 归位——一屏之内:
swap:200ms 先让上一发的余晖谢幕,再换入新的一发——这就是「延迟换入」的观感魔法。v4 招牌新特性
前七件 v2 也能跑;下面四件,是 v4 从零重写后带来的新能力——响应式引擎、乐观 UI、状态分流、增量合并。
响应式引擎 · hx-live
v4 新载的客户端响应式引擎:状态就近放在祖先的 data-*,hx-on 改它、hx-live:text 绑它——一次点击都不惊动服务器:
data-count 挂在共同祖先上,两个 {{乐观 UI · hx-pending
v4 内置的乐观占位:点下瞬间先把占位内容换进落点,真响应到了再覆盖——hx-pending 指向占位模板:
书写中…
乐观占位已就位,真响应稍后覆盖它。
状态分流 · hx-status
v2 里按状态码分叉要配 responseHandling 数组;v4 收成一个属性——hx-status:422 让校验错误自动改道:
#reg-ok;服务器返回 422 时改道 #reg-err,且只取响应里 #reg-err-body 那段——还支持 5xx、50x 通配。列表合并 · hx-swap="upsert"
v4 新交换策略:逐条比对 id,有则更新、无则插入、响应里没有的原样保留——列表不再整块重绘:
第 01 条 · 初始
第 02 条 · 初始
第 03 条 · 初始
item-2 就地更新、item-4/item-5 插入、item-1/item-3 保留;第二批只更新已有两条;第三批补进 item-6。sort 按 id 归位,焦点与滚动位置都不丢——这就是差异合并对整块替换的胜利。这些演示合计不过几百字节 HTML 与几行服务端字符串——没有一行手写的 AJAX。