服务器组件
React 服务器组件允许您编写可以在服务器上渲染和可缓存的 UI。在 Next.js 中,渲染工作进一步按路由段进行拆分,以支持流式渲染和部分渲染,并且有三种不同的服务器渲染策略:
本页将介绍服务器组件的工作原理、何时可能使用它们以及不同的服务器渲染策略。
服务器渲染的好处
在服务器上执行渲染工作有几个好处,包括:
- 数据获取: 服务器组件允许您将数据获取移动到离数据源更近的服务器。这可以通过减少获取渲染所需数据的时间和客户端需要发出的请求数量来提高性能。
- 安全性: 服务器组件允许您将敏感数据和逻辑保存在服务器上,例如令牌和 API 密钥,而不会有将它们暴露给客户端的风险。
- 缓存: 通过在服务器上渲染, 结果可以被缓存并在后续请求和跨用户中重用。这可以通过减少每个请求渲染和数据获取的数 量来提高性能和降低成本。
- 性能: 服务器组件为您提供了从基线开始优化性能的附加工具。例如, 如果您开始使用完全由客户端组件组成的应用,那么将 UI 的非交互部分移到服务器组件中可以减少客户端 JavaScript 所需的数量。这对于网速较慢或设备功能较弱的用户是有益的,因为浏览器需要下载、解析和执行的客户端 Javascript 更少。
- 初始页面加载和首次内容绘制(FCP): 在服务器上,我们可以生成 HTML 以允许用户立即查看页面,而无需等待客户端下载、解析和执行渲染页面所需的 JavaScript。
- 搜索引擎优化和社交网络可共享性: 搜索引擎机器人可以使用渲染的 HTML 来索引您的页面,社交网络机器人可以使用呈现的 HTML 为您的页面生成社交卡预览。
- Streaming: 服务器组件允许您将渲染工作分割成块,并在准备就绪时将它们流式传输到客户端。这使用户可以更早地看到页面的部分内容,而不必等待整个页面在服务器上呈现。
在 Next.js 中使用服务器组件
默认情况下,Next.js 使用服务器组件。这允许你在没有额外配置的情况下自动实现服务器渲染,并且你可以在需要的时候选择使用客户端组件,参见客户端组件。