核心摘要: 在 Next.js 的 App Router (/app) 架構中已不再使用 getStaticPropsgetServerSideProps。取而代之的是基於 React Server Components (RSC) 的全新資料獲取模式。(這些 API 在 Pages Router 中仍然使用)

以下主要討論 App Router 架構 (/app),Pages Router(/pages)僅做對照。


🔁 API 演進對照表

功能描述 舊版 Pages Router (/pages) 新版 App Router (/app)
靜態生成 (SSG) getStaticProps fetch(url, { cache: 'force-cache' }) (13/14版的預設, 前提是 route 符合可靜態化的條件)
伺服器端渲染 (SSR) getServerSideProps fetch(url, { cache: 'no-store' })(15+ 之後的預設)
增量靜態再生 (ISR) revalidate (於 props 回傳) fetch(url, { next: { revalidate: 60 } })
動態路徑生成 getStaticPaths generateStaticParams

🏗️ 架構轉型:為什麼 App Router 不再使用舊 API?

1. Server Components (伺服器元件)

2. Client Components (客戶端元件)


💻 實作範例:從舊轉新

舊版 SSR 寫法 (Pages Router)

JavaScript

export async function getServerSideProps() {
  const res = await fetch('<https://api.example.com/data>');
  const data = await res.json();
  return { props: { data } };
}

export default function Page({ data }) {
  return <div>{data.title}</div>;
}