用 htmx 构建渐进增强表单的实战心得
Building progressively enhanced forms using Htmx
最近我在 ties 项目中构建了一个高度交互的表单,用于编辑书签和关联列表。我采用渐进增强策略:无 JavaScript 时表单依然可用,启用 JS 后则通过 htmx 提升体验。文章探讨了在无 JS 环境下如何处理临时状态,比如利用表单值、URL 参数和路径来保留用户输入。我还分享了如何检测用户按下的按钮、拆分表单以避免 Enter 键冲突,以及 htmx 中 hx-target 的权衡。我的经验是:先写纯 HTML 功能,再叠加 htmx 优化,这样既保证兼容性,又避免后期重构。
我通常最终选择交换整个页面,因为这样在未来最不容易出错。
HN 评论区
13- yawaramin
> 为了处理这个问题而去折腾那些带外交换(out-of-band swaps),感觉既容易出错又难以维护。
这几乎总是因为使用了基于字符串的模板系统。如果你使用嵌入在语言中的 HTML 生成库,HTML 片段就会作为你语言中的一等公民(first-class values)存在,你可以以灵活的方式将它们组合起来。这使得带外交换变得非常简单。
- arthurcolle
视频似乎没有渲染出来,开始和结束时间都显示为 0:00 和 0:00