htmx团队发布了htmx 4.0.0,这是继2024年htmx 2.0以来该超媒体库的首个主版本更新。新版本历经八个月开发,直接跳过3.0版本。htmx创始人Carson Gross曾承诺永远不会有htmx 3.0,当被问及此次版本跨越时,他用一个词概括:“Oops”。
htmx已将长期使用的XMLHttpRequest传输机制替换为现代fetch() API。这次重写支持原生流式传输,同时将脚本体积控制在约14KB。对大多数开发者而言,熟悉的hx-get和hx-post属性仍保持原有行为。这一改动也为两项最受期待的功能提供了基础:一是基于idiomorph实现的内置Morphing Swap,在更新DOM时保留输入框焦点等状态;二是新增hx-partial标签,使单个响应能够简洁地更新多个目标元素,为带外交换提供更整洁的实现方式。
属性继承现在采用显式机制:只有在属性名后添加:inherited后缀,父元素上的属性才会传递给子元素。DEV Community上的一篇详细文章提醒开发者,这可能是升级过程中最需要警惕的问题。例如,原本通过hx-headers属性向子元素传递CSRF Token的实现,如果没有添加:inherited,就会悄无声息地失效,服务器随后以403状态码拒绝请求,但表面上看代码似乎并无异常。事件名称也统一为htmx:phase:action格式,例如htmx:afterRequest现在变为htmx:after:request。历史记录不再将DOM快照保存到localStorage,而是通过重新获取页面来恢复,从而确保第三方脚本正常工作。
Hacker News上的一篇讨论帖获得超过700赞,开发者称赞了Go、SQLite和htmx技术栈以及AI助手对该技术栈的良好支持。与此同时,r/htmx上的版本发布帖也获得超过300个赞。另一方面,一位使用.NET和Angular的开发者认为,htmx迫使开发者将表现层与业务逻辑混合在一起,另一位开发者也表达了类似看法,并表示其团队正准备迁回React。
htmx 4.0通过npm的next标签发布,而非latest,因此使用未指定版本CDN链接的用户不会被强制升级。2.x版本也将继续获得支持,且没有设定终止时间。团队还提供了命令行检查工具,用于识别属性继承问题、属性重命名以及旧版事件名称。新版本还引入60秒请求超时,并对多个属性进行重命名,例如hx-disable更名为hx-ignore。
扫码查看视频号
咨询
咨询