next.js两种模式(page router VS app router)

特性 / 维度 Pages Router(传统) App Router(现代推荐)
📁 路由目录结构 /pages /app
🧭 路由方式 文件即路由(如:/pages/about.js/about 文件夹+page.tsx 组合(如:/app/about/page.tsx/about
🎬 页面组件写法 默认导出 React 组件 必须导出 Page 组件,支持嵌套路由
🧱 布局(Layout)系统 仅支持全局 _app.js_document.js 支持嵌套布局 layout.tsx,每级路由独立布局
⌛ 中间件(Middleware)支持 支持(较弱,仅配合 Pages Router 的 URL 结构) 原生支持、自动识别 /middleware.ts,功能更强更灵活
🔁 动态路由 [id].js, [slug].js [id]/page.tsx, [slug]/page.tsx
🔌 数据获取(静态) getStaticProps generateStaticParams + async 组件
🔄 数据获取(服务端) getServerSideProps async 页面组件直接处理
🔄 数据获取(初始 props) getInitialProps(已不推荐) ❌ 不支持(被替代)
🌐 SEO 支持 手动 <Head> generateMetadata() 方法自动生成
🧩 模块复用性 只能在 _app.js 控制全局 模块化强,布局嵌套灵活可复用
📦 API 路由支持 /pages/api/* /app/api/*(结构更清晰)
⚡ 性能优化(懒加载) 手动优化 默认开启模块懒加载
💾 缓存控制 搭配 HTTP 响应头控制 原生支持 fetch() 缓存策略(如 force-cache
🧰 Middleware 支持强度 ✅(基本支持) ✅✅✅ 原生集成,权限控制/AB测试首选
📅 首次引入版本 Next.js 初始版本(长期支持) 自 Next.js 13 开始引入 App Router(app/ 目录)
🧠 元信息定义 <Head> 内部手动编写 generateMetadata() 函数式定义
📄 页面预加载支持 ✅ 支持 ✅ 支持
🧩 页面模块粒度 页面为单位 布局 + 页面 + loading + error 为粒度单位,组件化更彻底
🧪 使用复杂度 简单,开发者熟悉 稍复杂,但更强大、灵活
🧩 推荐场景 老项目维护、轻量网站 新项目开发、复杂布局、动态权限、国际化

Pages Router 示例结构

js 复制代码
/pages
  ├── index.tsx
  ├── about.tsx
  └── product/[id].tsx

App Router 示例结构

js 复制代码
/app
  ├── layout.tsx        # 根布局
  ├── page.tsx          # 首页
  ├── about/
  │   ├── layout.tsx    # about 页面独立布局
  │   └── page.tsx
  └── product/
      └── [id]/
          └── page.tsx

推荐选择指南

场景 推荐使用模式
老项目维护 Pages Router
简单文档/博客站 Pages Router 或 App Router(简单结构)
多语言、动态主题 App Router ✅
多租户、权限控制 App Router ✅(结合 Middleware)
页面级别模块复用需求强 App Router ✅
新项目 App Router ✅✅✅(官方推荐)

注意:选择模式要慎重,这影响到以后缓存、跳转、SEO等不同使用,选择前尽量根据自己以后要实现的内容针对性学习一下

相关推荐
倾听醉梦语14 小时前
React/Vite/Next.js 前端开发工具 SpotPatch:点击页面元素精准定位 JSX/TSX 源码
javascript·react·ai编程·vite·next.js·前端开发工具
李恒-聆机智能专精数采18 小时前
新网站在搜索引擎完全搜不到怎么优化?(四)——提交搜索引擎搜索资源平台
搜索引擎·seo·next.js·百度收录·网站优化
人间凡尔赛2 天前
2026 前端全栈新范式:Server Actions + Edge Runtime,告别传统 API 路由
前端·全栈·next.js
赵大仁4 天前
生成式 UI 实战:用 JSON Schema + React 动态渲染 AI 界面
前端·ai·react·next.js·前端架构·生成式ui
名字还没想好☜5 天前
React 用 Portal + Context 实现全局 Toast:一次调用、自动消失与队列管理
前端·javascript·react.js·react·next.js
牧艺5 天前
Knowledge Studio 本地开源版:对标百炼 RAG 控制台的架构、重难点与差异
llm·agent·next.js
李恒-聆机智能专精数采6 天前
新网站在搜索引擎完全搜不到怎么优化?(二)
seo·next.js·网站优化
名字还没想好☜7 天前
Next.js ‘use client‘ 到底加在哪:Server/Client Components 边界与常见报错
开发语言·前端·javascript·react·next.js
濮水大叔7 天前
为什么 AI 最擅长 React/Next.js,却很少看到真正好用的 Next.js 开源项目?
react.js·node.js·next.js
倾颜9 天前
AI 生图不只是调 API,一条生产级生图链路的设计与工程取舍
agent·next.js