Next.js

Next.js

用于构建全栈 Web 应用的 React 框架,自动配置打包器与编译器

核心功能

界面仍用 React 组件编写,Next.js 负责补上路由、渲染、构建等能力,并把打包器、编译器这类底层工具自动配好。适合需要服务端渲染、静态导出或前后端一体交付的 React 项目。

功能亮点

目录即路由

在 app 下建 page.tsx 就得到一个页面,同级 layout.tsx 自动包裹该段下的所有路由

四条命令覆盖全流程

next dev 起开发服务器、next build 产出生产构建、next start 跑生产服务器

打包器已默认换成 Turbopack

无需额外配置即启用;确有需要时加 --webpack 参数回到 Webpack 构建

TypeScript 零配置接入

改个文件后缀再执行 next dev,框架会自动补装依赖并写入推荐的 tsconfig 配置

两套路由长期并行

App Router 内置 React canary 以支持 Server Components,Pages Router 保持向后兼容

适用场景

• 对 SEO 与首屏速度有要求的 React 站点,用服务端渲染直出 HTML
• 前后端一体交付的业务系统,页面与服务端逻辑放在同一个 app 目录里管理
• 希望省掉打包器、编译器配置成本,直接从一条命令拿到可用工程的 React 团队

安装配置

bash
系统要求:Node.js 20.9 及以上;支持 macOS、Windows(含 WSL)与 Linux。

用 CLI 创建(最快的方式)——

npx create-next-app@latest

跳过所有提问、直接用推荐默认项(TypeScript、Tailwind CSS、ESLint、App Router、Turbopack,导入别名 @/*):
pnpm create next-app@latest my-app --yes
cd my-app
pnpm dev

交互式创建:
pnpm create next-app

手动安装到项目里:
pnpm i next@latest react@latest react-dom@latest

随后在 package.json 中加入脚本:
{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "eslint",
    "lint:fix": "eslint --fix"
  }
}

启动开发服务器后访问 http://localhost:3000

使用方法

bash
// app/layout.tsx —— 根布局,必须含 <html> 与 <body>
export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en">
      <body>{children}</body>
    </html>
  )
}

// app/page.tsx —— 首页,访问 / 时与 layout.tsx 一同渲染
export default function Page() {
  return <h1>Hello, Next.js!</h1>
}

# 启动开发服务器,然后编辑 app/page.tsx 即可看到实时更新
npm run dev

关键指标

尚未核验对标产品,此处只列本工具自身指标,不做对比结论。

指标Next.js
价格免费
开源
上手难度进阶

相关工具

同类工具

优点

  • 打包器与编译器由框架自动配好,开箱就有 Turbopack、TypeScript、路径别名这些常用设施
  • 路由靠 app 目录的文件结构表达,layout.tsx 按目录层级自动嵌套,不必维护集中式路由表
  • App Router 内置 React canary 版本,Server Components 等新特性无需自行对齐 React 版本
  • create-next-app 的 --yes 可跳过全部提问,用推荐默认项一次性生成工程

缺点

  • App Router 与 Pages Router 两套路由并存,选型和迁移都需要额外的判断成本
  • 要求 Node.js 20.9 及以上,浏览器侧默认只覆盖 Chrome/Edge/Firefox 111+ 与 Safari 16.4+
  • 文件命名高度依赖约定,编辑器里容易出现一堆同名的 page.tsx 标签页,官方专门给出了自定义标签的配置方案
  • 从 Next.js 16 起 next build 不再自动跑 linter,需要自己在 npm 脚本里接上