Hacker News 中文摘要

RSS订阅

本地优先Htmx -- Local First Htmx

文章摘要

文章提出"本地优先"(local first)的网页应用设计理念,强调将UI与数据本地化处理,再与远程服务器同步更新,从而提升响应速度。作者以Linear应用为例,对比Jira等传统网页应用的迟缓体验,指出本地优先设计能带来更流畅的用户体验。

文章总结

标题:本地优先的HTMX架构

本文第二部分现已发布

当前互联网体验普遍恶化:网页充斥着跳动的广告,搜索引擎用低劣的AI摘要遮挡结果,网站响应速度持续下降。虽然无法解决所有问题,但"本地优先"(Local First)的网页设计范式提供了改进方案——将UI与数据本地共存,用户操作能即时响应,后台再与远程服务器同步数据。线性应用linear.app就是优秀范例,其流畅体验与Jira、Github Issues等传统服务形成鲜明对比。

通过"梗驱动开发"(MDD)的视角,作者将HTMX这一反传统的前端框架(通过HTML属性实现交互)与本地优先理念结合。虽然HTMX通常依赖服务端渲染(SSR),但创新性地提出:将服务端代码编译为WASM运行在浏览器的Service Worker中,既能保持HTMX的简洁性,又能实现SPA应用的即时响应。

架构核心是利用Service Worker拦截所有fetch请求:当HTMX触发交互时(如示例中的按钮点击),Service Worker直接返回本地生成的HTML,同时后台同步服务器数据。这种设计既避免了传统SSR的延迟,又减少了JavaScript的复杂度。

(原文配图说明: 1. HTMX梗图激光马点赞图 2. 架构流程图展示主线程、Service Worker与远程服务器的关系 3. 点击事件被Service Worker拦截处理的示意图)

作者预告将在后续文章具体实现细节与优化方案。这种"本地优先HTMX"的混合架构,或许能为网页性能困境提供新的解决思路。

评论总结

以下是评论内容的总结:

  1. HTMX的本质与价值

    • 支持者认为HTMX不是反JS技术,而是扩展HTML功能,最终仍需编写JS代码。
      引用:"HTMX is neither a meme nor is it anti-javascript...it simply adds more features to HTML" (oldestofsports)
      引用:"state management can revert to the ur-web model" (librasteve)
  2. 对WASM的质疑

    • 部分用户认为WASM增加了不必要的复杂性,尤其对本地应用而言纯JS更合适。
      引用:"10MB Go WASM download? That's a no go" (kubafu)
      引用:"why not just write it all in JS?" (righthand)
  3. 本地优先架构的争议

    • 支持者认为适合离线场景(如euroderf),反对者指出服务端渲染(SSR)已能解决延迟问题。
      引用:"perfect for the locally inclined" (euroderf)
      引用:"Latency is not a real issue with SSR apps" (dlisboa)
  4. 技术组合的合理性

    • 有评论认为HTMX与服务端渲染更契合,本地化方案显得矛盾。
      引用:"HTMX use-case is mostly where you want server to do most work" (BinaryIgor)
      引用:"combine them in the dumbest way possible" (aidenn0)
  5. 创新实践案例

    • 开发者分享类似技术方案,如用Service Worker替代WASM(pickpuck),或Rust WASM实现(logankeenan)。
      引用:"used react-dom/server to generate HTML" (pickpuck)
      引用:"HTMX migrating to fetch makes this easier" (logankeenan)
  6. 极端简化观点

    • 个别用户提出激进方案:"why we even need a backend" (fud101)

关键分歧点在于:WASM的必要性、HTMX与本地化架构的适配性,以及技术栈复杂度的平衡。支持者强调开发效率(如librasteve的harcstack),反对者关注性能损耗(如10MB WASM)。