文章摘要
作者尝试了HTMX但最终放弃使用,认为虽然HTMX通过HTML属性实现功能的想法很好,能减少JavaScript使用,但它缺乏单页应用框架提供的结构和约定,导致开发体验不佳。当前开发模式以JavaScript为主生成HTML的方式虽然看似本末倒置,但框架提供的结构化开发更令人愉悦。
文章总结
标题:从HTMX转向MESH:我的模块化SSR探索之旅
作者:Alex Moon
发布时间:2025年9月21日
核心内容概述
1. 当前Web开发的反思
现代Web开发正经历对JavaScript和框架疲劳的反思,开发者开始重新关注超媒体(Hypermedia)和"HTML Over The Wire"理念。HTMX作为这一运动的代表,提倡通过HTML属性实现交互逻辑,减少对JavaScript的依赖。
2. HTMX的局限性
尽管HTMX理念吸引人,但作者认为它缺乏结构化约束,容易导致代码混乱。HTMX默认不跨越Shadow DOM边界,且未明确组件更新的默认行为,这些问题在复杂应用中尤为明显。
3. MESH的诞生
作者提出MESH(Modular Element SSR with Hydration),核心原则是"一个组件=一个端点"。MESH结合了HTMX的声明式交互与SPA框架的模块化,特点包括:
- 组件包含独立的HTML、CSS、JS和后端代码
- 通过Shadow DOM实现隔离
- 使用自定义事件和SSE(Server-Sent Events)实现跨组件通信
4. 关键技术实现
- Shadow DOM兼容:通过重写HTMX的交换逻辑,解决Shadow DOM边界问题。
- 实时协作:基于SSE广播组件更新,替代HTMX的OOB(Out of Band)交换机制。
- 精简前端:最终用约100行原生JavaScript替代HTMX,实现表单提交和SSE更新。
5. 经验总结
- HTMX适用场景:适合替代jQuery式开发,但在复杂应用中可能力不从心。
- 模块化SSR的未来:类似HotWire/LiveView的"组件即端点"模式是更优解,但现有方案绑定特定后端。MESH尝试提供一种后端无关的实现。
6. 项目成果
关键结论
作者认为,未来模块化SSR应遵循"始终全组件交换"原则,而HTMX当前设计未能完美支持这一理念。MESH作为探索性方案,展示了如何平衡声明式交互与SPA式结构,同时保持后端灵活性。
(注:原文中的大量代码片段已精简为关键技术描述,完整实现可参考GitHub提交历史。)
评论总结
以下是评论内容的总结:
1. 对HTMX的质疑与批评
认为HTMX不适合复杂应用,在小规模项目中表现更好: "htmx...incredibly useful for simpler websites but difficult for anything past 1000 lines" (评论12) "HTMX does not deliver under artificial constraints" (评论11)
认为HTMX被过度炒作: "Is HTMX an antimeme?" (评论6) "I heard there's a cup for ppl who hate htmx" (评论1)
2. 对HTMX的支持与认可
认为HTMX简化了开发流程: "I use htmx with Django...for something bog-standard (dashboard / admin UI)" (评论9) "Why is it that people critizing HTMX always end up slapping abstractions on top of it" (评论10)
认为HTMX代表了未来方向: "I'm of the opinion that this is the future of web development" (评论2,指类似Blazor的技术)
3. 对MESH项目的评价
正面评价: "MESH is a fun project intending to demonstrate the kinds of concepts embodied by HTMX" (评论16)
负面评价: "In the MESH examples I see a lot of verbose code" (评论15) "this would have been a bit better with some sort of 'recap'" (评论16)
4. 其他替代方案讨论
推荐其他技术方案: "The hot one for me right now is C#'s Blazor" (评论2) "I prefer the approach of EHTML" (评论20) "I tried to go pure JavaScript but ended up with web components with lit" (评论17)
认为React仍具优势: "React has built a moat with its component ecosystem" (评论14) "the top talent is building in React" (评论14)
5. 开发理念争议
对"回归基础"框架的质疑: "all these minimalist, back-to-the-basics frameworks a bit misguided" (评论19)
对构建工具的看法: "a hyper-minimal vite app...feels to me a very small price to pay" (评论22)
总结:评论呈现了对HTMX和MESH项目的两极分化观点,既有对其简化开发的赞赏,也有对适用范围的质疑。同时讨论了多种替代方案,反映了当前前端开发领域的技术多样性。