新闻详情

新闻详情

首页 / 资讯中心 / 详情

htmx 如何升级:1.x 到 2.x 的平滑迁移,自评一下再动手

发布时间:2026/10/2 2:13:31来源:尧图网络
htmx 如何升级:1.x 到 2.x 的平滑迁移,自评一下再动手
htmx 如何升级1.x 到 2.x 的平滑迁移自评一下再动手【免费下载链接】htmxhtmx - high power tools for HTML项目地址: https://gitcode.com/GitHub_Trending/ht/htmx本文带你完成 htmx 从 1.x 到 2.x 的大版本升级先做个自评判断自己的项目受不受影响再按换发行文件、重写事件语法、恢复默认值三步动手最后附上扩展迁移、验收清单和随时可执行的回退方案。 先做个自评这次升级会伤到你吗htmx 团队对向后兼容很上心官方迁移文档 的原话是多数情况下几乎不用改代码。但确实有一批破坏性变更对照下表先给自己定性你的情况受影响吗建议动作只是script src.../htmx.js引入没用过事件内联基本无感直接换文件升 2.x模板里有hx-on属性是逐个改写为hx-on:页面间有跨域请求是会被默认拦截关闭selfRequestsOnlyDELETE接口靠请求体传参是参数会改走 URL按后端能力决定是否回退配置依赖 swap 后平滑滚动轻微恢复scrollBehavior自定义扩展里调过selectAndSwap是API 已移除改用swap还必须支持 IE是2.x 不再支持 IE留在 1.x不升结论只要不碰事件内联语法和跨域/IE这两条你的升级成本就是换一下文件。 动手前的清点升级前花十分钟把这几项过一遍每项后面都告诉你为什么值得查你引用的是哪个发行文件2.x 把构建产物按模块体系拆成了多个文件见 scripts/dist.sh用错文件会直接 import 失败。全库搜一下hx-on旧hx-on语法在 2.x 中被移除CHANGELOG 2.0.0 条目这是本次升级唯一必须动手改的语法。列出你在用的扩展清单所有扩展已从核心发行包移出、独立分发其中SSE 扩展必须用 2.x 版本才兼容。搜一下hx-ws、hx-sse这两个 1.x 遗留属性在 2.0 已删除要换成对应扩展的写法。确认是否存在跨域请求和 DELETE 传参这两项对应 2.x 新默认值不改配置就会变行为。看自己的代码有没有直接调htmx.makeFragment()2.x 中它永远返回DocumentFragment见 src/htmx.js 中makeFragment的实现1.x 里为Element返回写的分支要删掉。确认是否还有 IE 用户有就整体锁在 1.x1.x 线会继续维护 IE 支持。 三步完成升级第一步替换发行文件2.x 的构建脚本 scripts/dist.sh 会产出四个文件按你的模块体系选模块体系文件ESMimport/dist/htmx.esm.jsAMDRequireJS 等/dist/htmx.amd.jsCommonJSNode/dist/htmx.cjs.js浏览器script直连/dist/htmx.js与 1.x 同名无需改路径另外注意 package.json2.0.1 起 npm 包的main指向dist/htmx.esm.js也就是说通过 npm 安装的用户入口文件自动就换成了 ESM 版。第二步把hx-on改写成hx-on:旧写法是在一个属性里塞多个事件名: 脚本新写法是一个事件一个属性事件名直接挂在属性名后面!-- 1.x -- button hx-get/info hx-onhtmx:beforeRequest: alert(发请求了)!-- 2.x -- button hx-get/info hx-on:htmx:before-requestalert(发请求了)三个要点事件名必须用 kebab-casehx-on:htmx:beforeRequest不生效因为 HTML 属性名不区分大小写浏览器会把属性名小写化大写字母会被吃掉。写hx-on:htmx:before-request才能稳定匹配详见 www/content/attributes/hx-on.md。htmx 事件可省命名空间hx-on::before-request等价于hx-on:htmx:before-request更省事。模板语言不喜欢冒号连字符形式等价可用hx-on-htmx-before-request、hx-on--before-requestJSX 场景友好。同一个元素上hx-on与hx-on:*不能共存两者同时存在时旧属性会被忽略——所以要么全改完要么混用在不同元素上。第三步恢复被重置的默认值可选按口味可以把这次默认值变更理解成出厂设置被重置了三项全局配置在 2.x 里换了新出厂值都在 src/htmx.js#L211 附近的默认配置对象里。配置项2.x 出厂值1.x 行为想回到 1.x 就写scrollBehaviorinstant瞬时滚动smooth平滑滚动见下方代码methodsThatUseUrlParams[get, delete][get]见下方代码selfRequestsOnlytrue仅同源false允许跨域见下方代码为什么改DELETE不算疯按 HTTP 规范DELETE本就该像GET一样用查询参数而不是请求体2.x 是把行为纠正到规范一侧。如果你的后端一直从 DELETE 请求体里读参数就恢复旧行为如果你的后端本来就解析查询串保持默认即可还能白捡一个合规性。// 想保留 1.x 体验加载 htmx 后执行按需取用 htmx.config.scrollBehavior smooth; htmx.config.methodsThatUseUrlParams [get]; htmx.config.selfRequestsOnly false; 特殊场景你是扩展作者内部 API 里的selectAndSwap被移除了替身是swap它同时挂在了公开 API 上。迁移套路是解析目标 → 取交换规格 → 调 swaplet content divHello world/div; let target api.getTarget(child); let swapSpec api.getSwapSpecification(child); // 自动读取元素上的 hx-swap api.swap(target, content, swapSpec);普通开发者同样能用htmx.swap(#output, divSwapped!/div, {swapStyle: innerHTML})一行就能驱动内容交换swapSpec支持swapStyle必填、swapDelay、settleDelay、scroll/show等字段完整签名见 www/content/api.md 的swap小节。你有跨域请求2.x 的selfRequestsOnly: true会在请求发出前把非同源请求拦下src/htmx.js#L241。确认是业务必需后设selfRequestsOnly false但记住这只是放开 htmx 自己这道门跨域能不能通最终看服务端 CORS。你还有 IE 用户那就别升了。htmx 2.x 放弃 IE1.x 版本线会继续支持官方迁移文档 明确说了 1.x 在可预见的未来都会继续支持。等 IE 流量自然归零再动不迟。✅ 验收与回退按序勾一遍再合主线控制台无报错htmx.version是 2.x。全站搜不到hx-on注意匹配等号避免误伤hx-on:。手动点一遍带hx-on:*的交互重点回归请求前后的事件。触发一次 DELETE 接口抓包确认参数在 URL 还是 body与后端约定一致。若做过跨域场景确认请求没有被selfRequestsOnly拦截。SSE/WS 等扩展均已换成 2.x 独立包版本页面上无hx-ws/hx-sse。跑一遍你自己的测试套件尤其关注 swap 相关断言。回退方案升级时别删 1.x 的发行文件把它挪到/dist/htmx-1.x.js留作后手htmx.config的三项恢复代码用条件包裹比如按版本或环境变量开关。真出问题就把script指回 1.x 文件——三项配置覆盖只存在于你的初始化脚本里撤掉即可页面模板层面的hx-on:与hx-on在同元素下互不干扰混用不同元素是允许的回退窗口期很短。写在最后htmx 1.x 到 2.x 的升级真正必须动手改的其实只有一处hx-on改hx-on:而且记得事件名全部小写横线化。剩下的都是默认值口味问题——滚动快慢、DELETE 走 URL 还是 body、跨域开不开全部可以用htmx.config一行调回来。最容易翻车的两个点事件名大小写和 DELETE 请求的传参位置变了但后端没跟上。把它们盯住这次大版本升级基本就是换文件加跑测试的功夫。【免费下载链接】htmxhtmx - high power tools for HTML项目地址: https://gitcode.com/GitHub_Trending/ht/htmx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Spring Boot集成Redis缓存实战:从配置到高可用的避坑指南 2026/10/2 3:06:01

Spring Boot集成Redis缓存实战:从配置到高可用的避坑指南

缓存这个东西,我一开始以为是"加个注解就完事"的简单活,直到在线上被教育过好几次才明白,Spring Boot集成Redis缓存的门道远比想象中多。配置层面的坑、序列化的坑、数据一致性的坑、热key的坑,每一个都可能让系统在流量…

阅读更多 →
德卡D8读卡器开发包实战:从环境配置到APDU收发与避坑指南 2026/10/2 3:06:01

德卡D8读卡器开发包实战:从环境配置到APDU收发与避坑指南

简介:德卡D8读卡器开发包面向需要开发德卡D8/T8射频卡读写器应用程序的C开发者,无论是刚接触射频识别的初学者,还是希望优化高级功能的资深工程师,都能从中获得完整的工具与参考。包内共320个文件,约30.75MB&#xff0…

阅读更多 →
德卡D8读卡器开发包实战:从驱动安装到APDU稳定读卡 2026/10/2 3:06:01

德卡D8读卡器开发包实战:从驱动安装到APDU稳定读卡

简介:德卡D8读卡器开发包面向需要开发德卡D8/T8射频卡读写器应用程序的C开发者,无论是刚接触射频识别的初学者,还是希望优化高级功能的资深工程师,都能从中找到可用的工具与参考。压缩包共320个文件,约30.75MB&#xf…

阅读更多 →
Kubuntu 22.04 从安装到配置:KDE Plasma 桌面全流程 2026/10/2 3:06:01

Kubuntu 22.04 从安装到配置:KDE Plasma 桌面全流程

跑了几年 Ubuntu 的 GNOME 桌面之后,我一度以为自己已经习惯了那套操作逻辑——直到某次在一台闲置的老笔记本上重装系统,顺手换成了 Kubuntu 22.04,才发现 KDE Plasma 在资源占用和可定制性上真的比 GNOME 舒服不少。开机能压到 500MB 内存出…

阅读更多 →
前端接口模拟与 Mock 实践:Apifox 打通前后端联调 2026/10/2 3:06:01

前端接口模拟与 Mock 实践:Apifox 打通前后端联调

上周三下午,产品经理在群里甩过来一张原型图,说这个页面下周一要给客户演示。我看了眼接口文档,后端同事那边表结构还在改,接口最快也得下周三才能出第一版。这种场景做前端的应该都不陌生——布局、交互、样式、动画全都能自己搞…

阅读更多 →
SpringBoot日志文件配置实战:滚动策略、磁盘清理与traceId全解析 2026/10/2 3:05:42

SpringBoot日志文件配置实战:滚动策略、磁盘清理与traceId全解析

上周五临下班,我把一个 SpringBoot 服务部署到测试环境,第二天早上一看磁盘告警:/data/logs/app.log 已经占了 28GB。检查之后发现不是什么业务 bug——是我的日志配置太粗放,一个线程池满的 WARN 日志每秒钟刷几百条,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉