文章摘要
这篇文章以幽默直白的方式呼吁开发者尝试HTMX框架,指出当前前端开发面临过度复杂化的困境。作者反对非黑即白的选择(纯HTML或复杂框架),认为HTMX提供了折中方案,能简化开发流程。文章强调通过实际体验来感受HTMX的价值,而非单纯说教。
文章总结
标题:拜托,你他妈试试HTMX吧
来源: http://pleasejusttryhtmx.com/
发布时间: 2025年12月17日 19:30:15 GMT
一份来自受够看你受苦的人的理性(但带点情绪)呼吁
我不会每句话都骂你是个白痴(虽然有人这么干过,甚至成了一类文体)。说实话,HTMX不需要我冲你大喊大叫来证明它的价值。
那些满口脏话的网络宣言很有趣——我也爱读——但说真的,喊“直接用HTML”或“他妈用React”并没改变任何人的技术栈。大家笑笑点头,然后继续和原生JS或webpack配置搏斗。
所以这次我换种方式。我依然会说脏话(毕竟我不是圣人),但我会展示给你看,同时恳求你为了自己的理智和快乐,至少试试HTMX。
虚假的两难选择
现在,极端派只给你两个选项:
选项A:“直接用HTML!”
他们没错。HTML的能力惊人:表单能用、链接能用、现在还有<dialog>元素。这套东西从Tim Berners-Lee还有头发时就开始支撑互联网,再加上一点优雅的CSS,效果能好得离谱。
但有时候——说到这就不舒服了——你确实需要一个按钮能局部更新页面,而不是整个刷新。你需要一个实时搜索框,需要交互性。
于是你转向:
选项B:React(或Vue、Svelte,或者Angular——如果你在受罚)
然后突然你有了:
- 一个包含847个依赖的package.json
- 需要45秒的构建步骤(如果CI之神开恩)
- PR里关于状态管理的争吵
- 新手被useEffect执行两次搞疯
- 让56K调制解调器哭泣的打包体积
就为了什么?一个待办列表?一个联系表单?一个显示数据库数字的仪表盘?
这是虚假的选择:要么忍受HTML的局限,要么陷入JavaScript框架的炼狱。
其实有第三种选择。求你了,试试吧。
HTMX:中庸之道
如果我告诉你:
- 任何HTML元素都能发HTTP请求
- 服务器只返回HTML(不是JSON,是真HTML)
- 返回的HTML可以插入页面任意位置
- 不用写一行JavaScript
- 整个库只有~14KB(gzip后)
这就是HTMX。就这么简单。
比如这个点击后发送POST请求并替换自身的按钮:
html
<button hx-post="/clicked" hx-swap="outerHTML">点我</button>
点击时,HTMX向/clicked发POST,服务器返回的HTML会替换按钮。没有fetch()、没有setState()、没有npm install、没有该死的webpack配置。
服务器只返回HTML。像2004年那样,但用户网速快了,服务器也能扛住。这是为超媒体架构而生的现代方案。
不信?直接点!
本页就用HTMX实现了以下可交互Demo:
Demo 1:点击按钮
按钮发送POST请求并替换自身:
html
<button hx-post="/demo" hx-swap="outerHTML">点我</button>
Demo 2:加载更多内容
按钮获取内容并追加到下方:
html
<button hx-get="/load-more" hx-swap="beforeend">加载更多</button>
Demo 3:实时搜索
输入时动态显示结果(带防抖):
html
<input hx-get="/search" hx-trigger="keyup changed delay:300ms" />
这就是HTMX。 我没写JavaScript,只写了HTML属性。服务器返回HTML片段,HTMX负责替换。行为直接写在标签里——不用翻组件文件和状态管理代码就能看懂按钮功能。HTMX称之为“行为局部性”,一旦习惯,你会到处想念它。
数据说话
公司Contexte将生产级SaaS应用从React迁移到Django模板+HTMX后:
- 代码量减少67%(21,500 → 7,200行)
- JS依赖减少96%(255 → 9个包)
- 构建速度提升88%(40秒 → 5秒)
- 页面加载提速50-60%(2-6秒 → 1-2秒)
他们删了三分之二代码,应用反而更好了。每个开发者都成了“全栈”,因为不再有独立的前端需要专攻。
当然,这是内容型应用,并非所有项目都能复现。但哪怕只有一半改进,不值得花个周末试试吗?
给怀疑者的回答
“但复杂的客户端状态管理怎么办?”
你可能根本不需要。你有表单、列表、点击触发的元素。HTMX全搞定。除非你在做Google Docs(但你不是)。
“React生态呢?”
生态就是你的node_modules有2GB的原因。HTMX的生态就是:你选择的服务器语言。没了。
“但单页应用感觉更快!”
等用户下载完2MB JS、解析、执行、水合、取数据、渲染后……是的,后续导航是快了。HTMX首次加载就快,因为不用启动应用运行时。
“我需要[某个React功能]!”
可能吧。React适合约10%的使用场景,但多数人用它解决根本不需要它的问题。
何时不用HTMX
我不是狂热分子。HTMX不适合:
- 实时协作编辑(如Google Docs)
- 重度客户端计算(如视频编辑器)
- 离线优先应用
- 真正复杂的UI状态
但诚实点:你真的是在做这些吗?还是又一个仪表盘、后台、电商站、博客、本质是表单表格列表的SaaS应用?
对后者,HTMX好到让人尴尬——“我们为啥搞这么复杂?” 那种尴尬。
所以,试试吧
你试过React、Vue、Angular(并后悔过)、试过本周Hacker News热榜的新框架。
就试试HTMX。 一个周末。找个侧项目、那个没人在乎的内部工具、或者你早就想重写的东西。
加一个<script>标签,写一个hx-get属性,看看会发生什么。
如果你讨厌它,只浪费了一个周末。但你不会讨厌的。你会疑惑:为什么我们曾以为前端必须这么他妈复杂?
延伸阅读:
- htmx.org 官方文档
- hypermedia.systems 超媒体应用免费书
本页是单个HTML文件,用HTMX实现Demo。没有构建步骤,没有package.json。不信?右键查看源码——连压缩都没有,因为没必要。
灵感来自(并愉快吐槽)motherfuckingwebsite.com等经典。开发者体验的极端主义不是罪!本站由我制作,带着十足的调侃。
评论总结
以下是评论内容的总结:
支持HTMX的观点
轻量简洁:HTMX以轻量级(14kb gzipped)和无需编写JavaScript的特点受到赞赏,适合简单交互场景。
- "The whole library is ~14kb gzipped" (评论9)
- "you (as a dev) don't need (to write any) js" (评论14)
服务器渲染优势:支持服务器渲染HTML片段,减少前端复杂性。
- "Your webserver replies with fully server-renderd HTML but just for the dom node" (评论14)
- "returning html instead of json when possible" (评论20)
反对HTMX的观点
复杂场景不足:在复杂交互(如电商后台)中,HTMX可能变得脆弱且难以维护。
- "For interactive products, anything beyond simple CRUDs, it's madness" (评论14)
- "Even at decent size app, soon it turns super brittle" (评论19)
生态不成熟:缺乏大规模实践、文档不完善,与AI工具兼容性差。
- "The documentation and examples are lacking" (评论27)
- "LLMs aren’t great at it" (评论27)
替代方案讨论
Turbo/Stimulus:Ruby on Rails开发者认为现有方案(如Turbo)已足够。
- "does htmx have an advantage over Turbo/Stimulus?" (评论15)
- "Prefer to stick with vanilla stack" (评论15)
Alpine.js等轻量方案:部分用户推荐Alpine.js作为更灵活的替代。
- "Alpine.js has been a complete revelation" (评论25)
- "enhancing server-rendered HTML, not replacing it" (评论25)
框架争议
React的实用性:部分用户认为React成熟且适用广泛,无需切换。
- "React is mature, used at scale" (评论27)
- "why bother learning two paradigms" (评论10)
过度简化批评:认为HTMX的演示案例(如Hello World)无法体现真实场景需求。
- "smallest 'Hello World' example to demonstrate" (评论9)
- "I can vibe code the most terrible web framework" (评论9)
其他技术建议
- 纯HTML可行性:有成功案例证明纯HTML可满足需求(评论16)。
- 安全与依赖问题:批评npm生态的安全隐患(评论29)。
HTMX创始人回应
创始人呼吁理性讨论,承认HTMX有适用场景限制,并推荐类似工具Unpoly(评论18)。