雷姆 Agent·念念工作台
首页文章项目

architecture / stage 3

Server Components 与 Client Components

理解 Next.js 如何把服务端数据能力和浏览器交互拆成不同组件边界。

Next.jsIntermediate已完成35 分钟#nextjs#server-components#client-components#rsc
BEFORE YOU START

学习前置

ReactReact 组件与数据流先学习 ↗Next.jsNext.js 核心架构先学习 ↗

一、这个技术是什么?

页面中的一部分逻辑只需要读取数据库,另一部分逻辑需要点击、输入和浏览器 API。如果把所有代码都发送到浏览器,首屏 JavaScript 会变多;如果所有代码都放在服务器,按钮又无法交互。

Server Components 与 Client Components 解决的是“哪些代码应该在哪里运行”的问题。

二、没有它之前发生了什么?

所有组件都发送到浏览器执行
↓
客户端 JavaScript 增多,数据获取边界模糊
↓
所有逻辑都放服务器又无法响应点击
↓
Next.js 用组件边界区分服务端和客户端职责

三、核心概念

1. Server Component

默认在服务器执行,可以直接读取服务端数据,不会把组件代码全部发送到浏览器。

2. Client Component

使用文件顶部的 use client 标记,适合状态、事件、浏览器 API 和交互逻辑。

3. 边界传递

Server Component 可以渲染 Client Component,但服务端传给客户端的 Props 需要可序列化。

4. 服务端优先

如果组件不需要交互,优先保留为 Server Component,减少浏览器端负担。

5. 不能混淆运行环境

数据库密钥、文件系统和服务端 API 不能放进 Client Component;浏览器事件也不能直接在 Server Component 中使用。

四、运行流程

五、面试复习

一句话回答

Server Component 负责服务端数据和页面组装,Client Component 负责浏览器交互;Next.js 通过边界控制发送给浏览器的 JavaScript。

高频追问

  • 为什么默认是 Server Component?
  • use client 是否表示组件只在客户端渲染?
  • Server Component 能不能直接使用 useState?
  • Client Component 能不能接收任意对象作为 Props?

容易答错

不要把 Server Component 简单等同于传统 SSR,也不要认为 Client Component 完全不会在服务器参与初始渲染。

六、项目展示

知识详情页可以让 Markdown 解析和页面生成留在服务端,把搜索框、收藏按钮和知识图谱画布单独做成 Client Component,形成清晰的性能边界。

INTERVIEW MODE

面试复习

把知识讲给面试官听
ANSWER

Server Component 负责服务端数据和页面组装,Client Component 负责浏览器交互;Next.js 通过边界控制发送给浏览器的 JavaScript。

FOLLOW-UP
  • 为什么默认是 Server Component?
  • `use client` 是否表示组件只在客户端渲染?
  • Server Component 能不能直接使用 `useState`?
  • Client Component 能不能接收任意对象作为 Props?
WATCH OUT

不要把 Server Component 简单等同于传统 SSR,也不要认为 Client Component 完全不会在服务器参与初始渲染。

PROJECT PRACTICE

把 Server Components 与 Client Components 放进项目里

用真实项目验证概念,再把架构、取舍和结果整理成面试时可以讲清楚的案例。

Hermes AgentAgent 工作流与工具调用
个人博客技术文章与工程实践展示
AI 知识平台当前 Markdown 驱动的知识系统
KEEP EXPLORING

相关知识

3 个推荐节点
Next.js · BeginnerNext.js 核心架构25 分钟 · 继续学习 ↗Next.js · BeginnerNext.js App Router 路由系统30 分钟 · 继续学习 ↗Next.js · AdvancedNext.js 数据获取与缓存机制40 分钟 · 继续学习 ↗
← 上一篇Next.js 核心架构下一篇 →Next.js App Router 路由系统

课程目录

  1. 1. Server Component
  2. 2. Client Component
  3. 3. 边界传递
  4. 4. 服务端优先
  5. 5. 不能混淆运行环境
  6. 一句话回答
  7. 高频追问
  8. 容易答错

学习关系

  • 阶段:3
  • 顺序:2
  • 前置知识:2
  • 相关知识:3
  • 更新时间:2026-08-02