对 Htmx 的适度批判

主要观点:在工作中使用 Htmx 时发现一些情况并不简单且复杂。
关键信息:

  • 继承问题:Htmx 属性继承是错误的,不同属性默认继承不同,需记住例外,导致继承无意义,违背行为局部性原则。
  • DOM 元素替换:多数有趣的 Web 应用不能直接替换 DOM 元素,因其有浏览器本地状态,如<details>等元素状态,替换会丢失状态,甚至 morphdom 也会覆盖一些预期不被覆盖的东西。
  • DOM 元素存储状态:将状态存储在 DOM 元素本身是个坏主意,Htmx 工作方式假设批量替换元素,保留元素时队列保留,违反设计。
  • 默认排队模式:默认排队模式不合理,会取消正在进行的请求,很不直观,导致工作丢失。
  • 事件触发:事件触发是非局部的,有类似属性继承的问题,服务器端语言的 DSL 工作可帮助,但感觉像旧的 JavaScript 回调编程。
  • 组件状态:类似 DOM 元素状态问题,自身组件有状态,Htmx 对此无好的解决方案,React 等有答案,Htmx 与 React 交互不佳。
  • 优势:能使用服务器端语言是巨大优势,无需数据序列化等。
  • Htmx 在 React 中的应用:可在 React 中重新实现 Htmx,解决组件状态等问题,无需特殊桥接,可使用 React 相关库,避免排队问题等。

重要细节:

阅读 13
0 条评论