一、我们为什么放弃了服务器端渲染?
还记得我们是怎么从「PHP直接渲染页面」进化到「前后端分离」的吗?
起初是因为希望前端体验更流畅、交互更灵活,于是我们选择了「服务端返回 JSON + 前端自己拼接 UI」。慢慢地,React、Vue 上场,状态管理也来了,组件拆分、路由、API 层、loading 状态……
等等,我们本来是为了更简单,结果把事情越搞越复杂?
想一想:服务器端其实已经知道用户是谁、有啥权限、看到什么数据,它完全可以直接把该有的按钮、表格、下拉菜单一并渲染好,结果现在我们非要前后端拉扯来回几次,再在浏览器里动态拼拼凑凑。
前端越来越重,后端变成了纯数据提供商。可有些事,真的只能前端做吗?
二、我们是不是把简单的事做复杂了?
一个常见的管理后台列表页,背后通常有这些逻辑:
- 权限控制:哪些按钮显示、哪些功能隐藏?
- 表单校验:不同角色填不一样的字段?
- 分页逻辑:带上搜索条件做偏移?
- Loading、Empty 状态:有无数据分别显示不同内容
你猜这是谁来写的?
没错,全给前端了,而且后端还得“配合”暴露一堆接口。可问题是:这些逻辑,后端本来就知道,还能一次性返回结果,非要两边来回折腾。
甚至有时候,前端只是想改一个按钮的显示条件,都要等后端接口加字段,再改前端逻辑……
说实话,这不叫分工,这叫拆得太过头了。
三、HTMX:让服务器“说人话” HTML
这时候,HTMX 出现了。
HTMX 是什么?一句话:让浏览器接受 HTML 响应并直接替换 DOM 元素,不再需要前端框架做 UI 拼装。也就是说,服务器渲染一个按钮或表格的片段,浏览器自动放进去就完了。
来看几个典型场景对比:
| 场景 | 传统做法 | HTMX 做法 |
|---|---|---|
| 列表渲染 | 拉 JSON + 手动 map 渲染 | 后端返回一个 <table> 就好 |
| 分页处理 | 维护分页状态 + loading | 点击分页按钮触发 /list?page=2,直接返回渲染好的页面片段 |
| 表单提交 | 提交 JSON,前端处理结果显示 | 提交表单返回一个 success 弹窗 HTML 片段 |
| 权限控制 | 前端拿权限字段,判断显示 | 服务器按权限返回对应按钮组 |
| 弹窗加载 | 前端组件加载 + 事件绑定 | 点按钮,后端返回 modal 内容片段插入页面 |
你不需要再手写太多状态管理代码、也不需要框架来操控 UI 状态,一切交给服务器,它知道怎么做得更合理。
🛠️ 想体验 HTMX?来几分钟搞定环境
别看 HTMX 听起来新,其实你本地跑起来一点也不麻烦,只要你有个干净的后端环境就行。
推荐工具: ServBay —— 它是一款 macOS & Windows 的本地开发环境管理器,支持一键运行 PHP、Python、PostgreSQL、Redis 等服务。特别适合做以下这些事情:
- 本地跑一个 Flask + HTMX 项目,快速构建原型页面
- 对比 Laravel Blade + HTMX 渲染体验
- 测试后端返回 HTML 的渲染效率 vs JSON 方案
- 🧪 做 HTML + JSON 双通道接口的调试对比
📦 安装后只需几步即可启动一个后端服务,HTMX 示例项目跑起来只要几分钟。想试试“回归服务器渲染”的开发方式?这个组合真的轻量又优雅。
四、为什么这种方式现在又可行了?
有人可能会问:我们不早就用过服务器渲染了吗?为啥又回去了?
区别在于:这次我们不再整页刷新了,而是只刷新需要变的那一小块。
- 现在的浏览器支持局部 DOM 替换,性能远超十年前
- 网络条件好了,响应 HTML 的体积根本不是问题
- 业务迭代节奏更快,后端维护渲染逻辑能更敏捷
- HTMX 没有前端构建、没有 NPM 依赖、没有 webpack,直接上线,轻松多了
可以说:我们不是回到了老办法,而是用上了现代能力,走了一条更加简单直接的路线。
五、HTMX 不是要替代 React,而是让我们有选择权
别误会,这不是一场「框架革命」。
HTMX 不是来灭掉 React、Vue 的,它是给那些**“80% 是表格和表单”**的系统一个更轻量的选择:
适合 HTMX 的场景:
- 内部管理后台
- CMS 内容系统
- 企业中后台工具
- 低频操作但需要快速交付的功能页
而复杂交互、多状态切换、需要实时响应的富应用(比如:Web IDE、多人协作工具),当然还是前端框架的天下。
但你不需要每个项目都上 React + 状态管理 + API 层 + TS + CSS-in-JS 吧?
六、总结:是时候让服务器做回它擅长的事了
服务器从来不是“只会提供 JSON”。
它知道用户是谁,有权限信息、登录状态、数据模型,它完全可以直接输出页面该长什么样。
与其前后端来回配合做一个按钮,不如直接让服务器返回它该有的样子。
HTMX 给了我们这样一种新的方式:
- 简洁
- 轻量
- 可维护
- 快速响应
我们不是倒退,而是在现代条件下,走得更轻巧、更自在。
如果你也受够了为了一个按钮改三层代码,不妨给 HTMX 一个机会,让服务器“说人话”,让开发回归本质:直接、有效、有趣。