Next.js基础

Next.js基础

核心渲染模式

Next.js 提供了多种渲染模式,其中最核心的是 SSR 和 SSG,以及后来新增的 ISR。

一、SSR-服务端渲染

工作原理 : 每次用户请求时,在服务器上实时生成 HTML,返回给客户端。

代码示例

js 复制代码
// pages/index.js 或 app/page.js (App Router)
export default function Page({ data }) {
  return <div>{data.title}</div>;
}

// 每次请求都会执行
export async function getServerSideProps() {
  const res = await fetch('https://api.example.com/data');
  const data = await res.json();
  
  return { props: { data } };
}

优缺点

优点:数据始终是最新的、SEO友好、适合个性化内容

缺点:响应速度较慢、服务器压力大、TTFB(首字节时间)较长

使用场景

用户个性化页面(如个人中心、购物车)

数据实时变化的内容(如股票行情、实时比分)

需要根据请求头(如 User-Agent、Cookie)动态生成内容

二、SSG- 静态站点生成

工作原理: 构建时(next build)就生成静态 HTML 文件,直接部署到 CDN。

代码示例

js 复制代码
// pages/index.js (Pages Router)
export default function Page({ data }) {
  return <div>{data.title}</div>;
}

// 构建时执行一次
export async function getStaticProps() {
  const res = await fetch('https://api.example.com/data');
  const data = await res.json();
  
  return {
    props: { data },
    revalidate: 60,  // ISR: 60秒后重新生成(可选)
  };
}

// 生成动态路由
export async function getStaticPaths() {
  const paths = await getPostIds();
  return { paths, fallback: false };
}

优缺点

优点:性能极快(CDN 缓存)、SEO 极佳、服务器压力小、成本低(可部署在 CDN)

缺点:构建时间长(内容多时)、数据不是实时的、适合频繁更新的内容

使用场景

博客、文档网站

电商商品详情页(数据变化不频繁)

营销落地页

任何不经常变化的内容

三、ISR- 增量静态再生

工作原理: SSG 的增强版,允许在运行时更新静态页面,无需重新构建整个站点。

代码示例

js 复制代码
export async function getStaticProps() {
  const data = await fetchData();
  
  return {
    props: { data },
    revalidate: 60,  // 60秒后触发后台重新生成
  };
}

工作流程

用户访问 → 返回缓存的旧页面

60秒后,下次访问 → 触发后台重新生成

新页面生成后 → 替换旧缓存

优点:兼顾性能和数据实时性、大站构建时间可控(只重新生成变更的页面)、可以处理数百万页面

使用场景

博客、文档网站

电商商品详情页(数据变化不频繁)

营销落地页

任何不经常变化的内容

相关推荐
Tairitsu_H1 分钟前
[C++] C++11 Lambda与包装器深度解析
开发语言·c++·c++11·lambda·包装器
傲世仙尊9 分钟前
从磁盘硬件到Ext文件系统-Linux磁盘级文件系统学习笔记
linux·运维·服务器·开发语言·c++
计算机魔术师15 分钟前
黄仁勋台上接特朗普电话开免提,全场听到一句话:AI 不会减速
前端
小羊没烦恼!28 分钟前
Memory 记忆设计讨论:为什么 Agent Memory 不能只靠向量数据库?
java·开发语言·windows·算法·c#
yivifu37 分钟前
HTML元素的textContent和innerText两个属性的差别
前端·html
黑马程序员毕设43 分钟前
基于微信小程序的节目活动报名与管理系统设计与实现
java·开发语言·spring boot·后端·电脑
天若有情6731 小时前
开源轻量双语工具|一键批量查询 NPM 包历史下载量,支持按作者批量统计
javascript·npm·github pages·开源工具·netlify·前端开源·npm克隆量
sunshine22 girl1 小时前
Java学习 java原理
java·开发语言·学习
咸鱼老弟1 小时前
Speculative Decoding(投机采样):大模型"先猜后验",生成速度翻倍
前端·算法·ai编程
a1117761 小时前
网页版「MATLAB」开源
前端·开源