第14章 Next.js快速上手

React 全栈框架,服务端渲染入门

作者:zyyc-0336  |  日期:2026-06-12

🗺️ 学习路径建议

  1. 先学 14.1(Next.js 是什么),理解它和 React 的关系
  2. 再学 14.2-14.3(环境要求和创建项目),动手跑起来
  3. 最后学 14.4(目录结构和核心概念),建立整体认知
⚠️ 常见错误提示
• Next.js 的 app/ 目录是 App Router(新),pages/ 是 Pages Router(旧),本文用 App Router
"use client" 必须写在文件第一行,它让组件变成客户端组件
• 默认组件是服务端组件,不能用 useState/useEffect 等 Hook
next dev 启动的默认端口是 3000,不是 5173(Vite 的端口)

14.1 什么是 Next.js

Next.js 是基于 React 的全栈框架。React 只管 UI,Next.js 在此基础上提供了路由、服务端渲染、API 接口、部署优化等"全家桶"能力。

React vs Next.js

特性React(纯库)Next.js(框架)
路由需要第三方库(react-router)内置文件式路由
渲染方式纯客户端渲染(CSR)支持 SSR + SSG(更快、SEO 更好)
API 接口需要单独搭后端内置 API Routes
优化需要自己配自动代码分割、图片优化
部署需要配打包工具一行命令部署到 Vercel

Next.js 适合做什么?

💡 简单理解:React 是发动机,Next.js 是一整辆车。发动机再好,你还需要轮子、方向盘、座椅。

14.2 环境要求与创建项目

环境要求

工具最低版本检查命令
Node.js18.17 以上node -v
npm9 以上npm -v

创建项目

bash
# 创建 Next.js 项目(使用 App Router)
npx create-next-app@latest my-blog --typescript --tailwind --eslint --app --src-dir

# 参数说明:
# --typescript  使用 TypeScript(可选,推荐)
# --tailwind    使用 Tailwind CSS(可选)
# --eslint      使用 ESLint(推荐)
# --app         使用 App Router(必须选)
# --src-dir     使用 src 目录(可选,推荐)

如果你不想用 TypeScript,可以去掉 --typescript

bash
npx create-next-app@latest my-blog --js --tailwind --eslint --app --src-dir

启动开发服务器

bash
# 进入项目
cd my-blog

# 安装依赖(create-next-app 已自动安装)
npm install

# 启动开发服务器
npm run dev

打开浏览器访问 http://localhost:3000,看到 Next.js 欢迎页就说明成功了。

💡 npm run dev 启动的是开发服务器,修改代码后页面会自动热更新(Hot Reload),不用手动刷新。

14.3 开发命令

常用命令

命令作用
npm run dev启动开发服务器(开发时用)
npm run build构建生产版本(部署前用)
npm start启动生产服务器(构建后用)
npm run lint运行代码检查
命令端口用途
npm run devlocalhost:3000开发调试
npm run build && npm startlocalhost:3000模拟生产环境

14.4 目录结构

Next.js 项目的默认目录结构(App Router):

tree
my-blog/
├── public/                 静态资源(图片、字体等)
│   └── next.svg            Next.js Logo
├── src/
│   └── app/                应用目录(路由和页面在这里)
│       ├── layout.js       根布局(所有页面的公共外壳)
│       ├── page.js         首页(对应路由 /)
│       ├── globals.css     全局样式
│       └── favicon.ico     网站图标
├── next.config.js          Next.js 配置文件
├── package.json            项目配置
├── tailwind.config.js      Tailwind 配置
└── tsconfig.json           TypeScript 配置

核心文件说明

文件作用必须?
app/page.js对应路由 /(首页)
app/layout.js根布局,包裹所有页面
app/globals.css全局样式
public/静态资源目录
📝 创建第一个页面示例
jsx
// src/app/page.js —— 首页

export default function Home() {
    return (
        <main style={{
            display: 'flex',
            flexDirection: 'column',
            alignItems: 'center',
            justifyContent: 'center',
            minHeight: '100vh',
            fontFamily: 'sans-serif'
        }}>
            <h1>欢迎来到我的博客</h1>
            <p>用 Next.js 搭建的个人博客系统</p>
            <div style={{ marginTop: '20px' }}>
                <a href="/posts" style={{
                    padding: '10px 20px',
                    backgroundColor: '#3498db',
                    color: 'white',
                    textDecoration: 'none',
                    borderRadius: '6px'
                }}>
                    查看文章 →
                </a>
            </div>
        </main>
    );
}

保存后,浏览器会自动刷新显示新页面。

App Router 核心概念

概念说明文件
页面每个 page.js 对应一个路由app/about/page.js/about
布局layout.js 包裹页面,共享 UIapp/layout.js 根布局
组件普通 React 组件任何 .js 文件
静态资源放在 public/ 里的图片等/public/logo.png/logo.png
⚠️ 新手易错app/ 目录下的文件名有特殊含义。page.js 是页面,layout.js 是布局,loading.js 是加载状态,not-found.js 是 404 页面。不要随便乱命名。

⚠️ 新手易错app/page.js 的组件名可以随便起(通常叫 Home),但必须默认导出export default function Home() {}

本章复盘——Next.js 快速上手核心要点

要点说明
Next.js 是什么基于 React 的全栈框架,内置路由、SSR/SSG、API
创建项目npx create-next-app@latest--app 参数
开发命令npm run dev 启动开发服务器(端口 3000)
目录结构src/app/page.js 是首页,layout.js 是布局
页面每个 page.js 对应一个路由
导航next/link<Link> 组件,不用 <a>

下一章预告(第15章):我们将学习文件式路由与布局——App Router 目录结构、layout.js 和动态路由。

本文档由 zyyc-0336 编写,最后更新:2026-06-14