Server Components 和 Client Components 的边界怎么定
不是所有交互都值得放进客户端,也不是所有内容都应该在服务端一次做完。关键在于边界。
发布于 2026-04-09更新于 2026-04-13约 2 分钟阅读
#App Router#React#Next.js
Tutorial Path
App Router 实战系列
当前位置:02 / 04
让内容站点既保持轻量,又保留必要交互。
内容型站点天然更适合 Server Components,因为列表、详情、分类、SEO 这些能力本身就依赖服务端读取和组织内容。但这并不意味着整个站点都不能有交互。关键不是“选哪一边”,而是把交互限定在正确范围内。
先问页面的主要任务是什么
如果一个页面的主要任务是展示内容、输出 metadata、参与索引,那么它默认就应该尽量停留在服务端。博客详情页、项目详情页、分类聚合页都属于这一类。
如果一个局部区块需要即时输入、状态切换、浏览器 API 或本地存储,那它才值得切到客户端,比如搜索框、主题切换、收藏按钮、命令面板。
不要为了一个按钮把整页都变成 client
这是最常见的误区。页面里只要出现一个交互,就有人顺手在最顶层加 use client。结果是:本来很适合服务端渲染的详情页,也被迫变成客户端组件,SEO、首屏和数据边界都开始变复杂。
更稳的做法是让页面主体保持服务端,只把真正需要交互的局部抽成独立 client 组件。
小结
Server Components 和 Client Components 不是对立阵营,而是一条清晰的分工线。内容站点应该让服务端负责主叙事,让客户端负责必要互动。下一篇我们回到 SEO 相关的 App Router 能力:generateMetadata、sitemap 和 robots 应该怎样在项目里落地。