React Server Components(RSC)是 React 生态中最重要的范式转变之一。它让我们重新思考组件应该在哪里运行。
什么是 Server Components?
Server Components 是在服务器上渲染的 React 组件。它们不会向客户端发送 JavaScript bundle,这意味着更小的包体积和更快的初始加载。
// 这是一个 Server Component(默认行为)
async function BlogPost({ slug }: { slug: string }) {
// 可以直接访问数据库,无需 API
const post = await db.post.findUnique({ where: { slug } });
return (
{post.title}
{post.content}
);
}
核心优势
1. 零客户端 JavaScriptServer Components 不打包到客户端。如果你的组件只是渲染数据,就没有理由把逻辑发送到浏览器。 2. 直接访问后端资源
// 直接读取文件系统
import fs from 'fs';
async function MDXPost({ slug }: { slug: string }) {
const content = fs.readFileSync(posts/${slug}.mdx, 'utf-8');
return ;
}
3. 自动代码拆分每个 Client Component 成为自动的代码分割点。
何时使用 Client Components?
当组件需要以下功能时,使用 'use client':
- 事件处理器(
onClick,onChange) - React hooks(
useState,useEffect) - 浏览器 API
总结
Server Components 不是替代 Client Components,而是让你更精细地控制什么在服务端、什么在客户端运行。合理组合两者,是现代 React 应用的关键。