Next.js 通过 getServerSideProps 实现 SSR:该函数在每次请求时于服务端执行,获取数据后注入页面组件并返回完整 HTML。仅限页面组件使用,支持服务端能力但禁用浏览器 API,保障数据安全与 SEO。
Next.js 是一个基于 React 的轻量级框架,专为构建服务端渲染(SSR)、静态站点生成(SSG)和混合渲染应用而设计。它开箱即用地支持文件系统路由、API 路由、自动代码分割、热更新和优化的构建流程,让 SSR 不再需要手动配置 Webpack、Babel 或 Express 服务。
Next.js 在页面组件中提供 getServerSideProps 函数,该函数在每次请求时于服务端运行,获取数据后将结果与页面组件一起序列化并发送到客户端,从而完成真正的服务端渲染。
pages/ 或 app/ 中的路由组件)中有效,不能在普通组件内使用window、document)以 pages/index.js 为例:
export default function Home({ posts }) {
return (
博客列表
{posts.map(post => (
{post.title}
))}
);
}
export async function getServerSideProps() {
const res = await fetch('https://jsonplaceholder.typicode.com/posts?_limit=3');
const posts = await res.json();
return { props: { posts } };
}
运行 next dev 后,每次访问首页都会触发服务端请求,拿到最新数据再渲染 HTML 返回给浏览器。
理解三者有助于合理选型:
getStaticProps 实现SSR 并非万能,需注意以下几点:
req.headers.cookie 手动解析身份信息getServerSideProps 中做耗时操作,否则拖慢首屏时间;必要时加缓存或降级策略app/ 目录),SSR 默认启用,可通过 generateStaticParams 和 dynamic = "force-dynamic" 控制行为
Pages)不支持原生 SSR