目录
跟 Claude Code 或 ChatGPT 说“我想做个 Web 应用”,几乎一定会听到:“用 Next.js 吧。”对有经验的人来说这很自然,但新手会立刻冒出疑问:“Next.js 是什么?和 React 有什么不同?真的需要吗?”
先说结论:在新手的头一两个项目里,Next.js 是“方便”,不是“必需”。如果目标只是做出能跑的东西,更轻的选择(静态 HTML、Astro、Vite + React)往往就够了。与此同时,React 官方文档建议新应用从框架起步,并把 Next.js 放在第一位。本文用 React 与 Next.js 官方文档原文(截至2026年10月1日)核对这两面,整理出“用”与“不用”的分界线。
本文负责的是“AI 推荐 Next.js 时怎么判断”。Next.js 的原理(渲染方式、App Router、各版本变化)见 Next.js 是什么?,要不要部署到 Vercel 见 AI 推荐 Vercel 时。
就算 AI 推荐,第一个项目也未必需要
——按想做的规模来判断的3个落脚点
AI 往往先给出常见的“Next.js + Vercel + Tailwind”组合。
自己先对规模做一次判断,要学的东西就会大不相同。
1. AI 为什么推荐 Next.js——3个原因
AI 工具推荐 Next.js 是有根据的,归纳为3点。
AI 推荐 Next.js 的3个原因
原因①:官方文档推荐
React 官方页面“Creating a React App”写明:用 React 做新的应用或网站,建议从框架起步,并首先列出 Next.js(App Router)。公开的代码和教程里 Next.js 的例子也很多。因此对 AI 来说,推荐 Next.js 是“不易出错”的回答。但这并不是针对“是否最适合你的用途”做出的判断。
原因②:需要的功能“全都有”
只用 React(Vite + React 等)时,路由、服务器端渲染、图片优化、API都得分别用不同的库拼起来。Next.js 把它们放进一个框架里。AI 判断“要解释的东西更少”“代码更少”是合理的。
原因③:上线的步骤短
Next.js 由 Vercel 开发和维护,React 官方文档也写明了这一点。Vercel 通过 GitHub 集成,每次 push 都会一路发布上线,从写代码到上线的阻力很小。不过 Vercel 的免费套餐有条件,例如仅限非商业用途。详见 AI 推荐 Vercel 时。
2. Next.js 是什么——只讲判断所需
先理清术语。容易混淆的有3个:
- JavaScript:在浏览器里运行的基础编程语言
- React:Meta(原 Facebook)开发的 UI 库,用组件搭建界面的工具
- Next.js:由 Vercel 开发、建立在 React 之上的“框架”,把路由、服务器端渲染、优化等“每做一个 Web 应用都需要的机制”打包在一起
用盖房子来比喻:JavaScript = 木材,React = 锤子和锯子,Next.js = 骨架(地基、柱子、屋顶框架)已经搭好的房屋套件。装修、摆好家具就能住,但必须遵守套件的规矩。
截至2026年10月1日,最新版本是 Next.js 16.3(2026年8月3日发布)。做判断时,比版本号更重要的是“更新的频率”。从2026年7月起,Next.js 改为每月提前预告并发布安全修复,2026年9月发布修复时,16.3 系列为“Active LTS”,15.5 系列为“Maintenance LTS”(Next.js 官方博客)。要用它,就得持续跟进这些更新。原理的详细说明(SSR、SSG、ISR、App Router、各版本变化)见 Next.js 是什么?。
3. 现在需要 Next.js 吗?分界线在哪里
先用5个问题缩小范围,判断你是否需要 Next.js。随后给出官方文档写到的适合与不适合,以及分界线表。
决定是否需要 Next.js 的5个问题
Q1~Q3 中有2个以上指向 Next.js,就适合用 Next.js。
几乎都不符合的话,可以考虑更轻的选择。
官方文档显示的适合与不适合(截至2026年10月1日)
Next.js 官方文档里没有“不适合的情况”清单。能作为判断材料的,是 React 官方的“如何起步”和 Next.js 官方的“放在哪里能用什么”。
| 出处 | 原文写了什么 | 对判断的意义 |
|---|---|---|
| React“Creating a React App” | 建议新应用从框架起步,列出 Next.js(App Router)、React Router(v7)、Expo(原生应用) | 做 Web 应用时,Next.js 是官方推荐的候选之一,但不是唯一选择 |
| 同页“Start From Scratch” | 如果有现有框架难以满足的限制、想自己做框架,或者想学习 React 的基础,可以从零开始(路由和数据获取由自己选择) | 为了学习而用 Vite 等从纯 React 起步,也符合官方思路 |
| Next.js“Deploying” | Node.js 服务器和 Docker 支持全部功能,静态导出仅部分,各平台自己的集成“功能和兼容性可能不同” | 放置位置决定能用哪些功能。不用 Vercel 也能跑全部功能 |
| Next.js“Static Exports” | 静态导出不支持 Cookie、rewrites/redirects/headers 设置、ISR(定期重新生成)以及依赖请求的 Route Handlers 等 | 想放到只能托管静态文件的虚拟主机上,就得在设计时避开这些,或换别的方案 |
| Next.js 官方博客 | 从2026年7月起每月提前预告并发布安全更新。截至2026年9月,16.3 系列为 Active LTS,15.5 系列为 Maintenance LTS | 在服务器上运行的话,持续打补丁是前提 |
分界线表——选 Next.js 还是不选
把上面的原文和5个问题合起来,分界线大致如下(请把官方原文与本文的整理区分开来读)。
| 条件 | 选 Next.js | 不选(替代候选) |
|---|---|---|
| 做什么 | 公开页面与登录后的界面、API 混在一起的 Web 应用 | 只罗列文章的网站(Astro、Hugo、WordPress) |
| 搜索流量 | 有很多页面想出现在搜索结果里 | 只有登录后的界面(Vite + React 的 SPA) |
| 学习阶段 | 已懂 React 基础(组件、props、state) | React 本身是第一次接触(官方也给出从零学的路径) |
| 放置位置 | 能跑 Node.js 或 Docker,或 Vercel 等支持它的 PaaS | 只能放静态文件;需要服务器功能就换别的架构 |
| 运维 | 能按月打安全补丁 | 没有精力跟进更新(静态网站受影响较小) |
| 已有资产 | 新项目 | 已在运行 Laravel、Rails、Django 等 |
4. 不用 Next.js 的起步方式——4个主要替代
明白“不一定要 Next.js”之后,按用途有4个现实的替代方案。
| 选项 | 适合谁 | 优点 | 缺点 |
|---|---|---|---|
| Astro | 博客、作品集、落地页 | 页面以 HTML 输出,只在需要交互的地方加 JavaScript。可以混用 React、Vue、Svelte 组件 | 不适合以登录为中心的动态应用 |
| Vite + React | SPA、内部工具、待办应用 | 配置少,马上能跑。可以专注于 React 基础 | 想被搜索到的页面需要另外准备服务器端机制 |
| SvelteKit | 想要服务器端渲染,但不一定用 React | 写法接近 HTML,内置服务器端渲染 | React 学到的东西不能直接沿用 |
| HTML + Vanilla JS | 真正的小网站 | 零依赖,放上静态文件即可发布 | 规模变大后难以管理 |
具体的选择指南:
- 个人博客、文章网站 → Astro。AI Arte 本身基于 Laravel,但新开一个静态博客的话值得先试试 Astro
- 待办应用、计算器、内部 SPA → Vite + React。也适合学习 React 基础
- “不想用 React” → SvelteKit。模板写法接近 HTML
- 只有一个落地页 → HTML + CSS。不需要框架
5. 如果要用——必须掌握的5个基础
决定“用 Next.js”之后,至少要掌握这5个基础。
基础①:App Router 与 Pages Router
Next.js 里新方式(App Router)和旧方式(Pages Router)并存。新项目用 App Router 起步(官方文档也以 App Router 为中心)。旧教程很多默认 Pages Router,要养成先确认“这是 App Router 用的吗?”的习惯。
基础②:Server Components 与 Client Components
这是 App Router 的核心概念。组件默认是 Server Component(在服务器端渲染)。需要点击等交互的部分,在文件开头写 'use client',变成 Client Component。记住“取数据在 Server,界面操作在 Client”,就能避开起初的大部分困惑。
基础③:文件名就是路由
app/about/page.tsx → /about,app/blog/[slug]/page.tsx → /blog/任意字符串。文件夹结构直接就是 URL。和 React Router 等的思路不同,一开始会不习惯。
基础④:环境变量放哪里
API 密钥等写在 .env.local 里。只有可以交给浏览器的值才加 NEXT_PUBLIC_ 前缀,只在服务器用的值不加。弄错这一点把机密值暴露到浏览器,是新手常见的事故。
基础⑤:Vercel 以外的部署地点
按照 Next.js 官方“Deploying”页面,Node.js 服务器(next start)和 Docker 能跑全部功能,静态导出只支持部分。Cloudflare、Netlify 等使用各自的集成,官方说明“功能和兼容性可能不同”(Cloudflare 和 Netlify 正在开发官方的已验证适配器)。自己的服务器也能跑全部功能,但更新和监控就得自己承担。使用 Vercel 的条件写在 AI 推荐 Vercel 时。
6. 新手容易掉进的3个坑
坑①:“全都写成 use client”
每出一个错误就加一个 'use client',在服务器端渲染的好处就几乎没了。那样的话 Vite + React 反而更直接。要记住“Client 尽量少,默认用 Server”。
坑②:事后才知道放置位置的条件
典型情形是:照 AI 说的用 Vercel 免费套餐起步,后来才发现“放了广告就算商业用途,免费套餐不能用了”。Vercel 的 Hobby 仅限非商业的个人使用,Pro 每月 $20 起,超出部分按量计费(截至2026年10月1日的 Vercel 官方文档)。反过来,也有人想放到只能托管静态文件的虚拟主机上,事后才发现重定向和 ISR 用不了。开工前先定好放在哪里,只用那里能跑的功能来设计。
坑③:AI 用旧的 Pages Router 写法
训练数据里有大量旧代码,所以 AI 有时会返回 Pages Router 风格的 getStaticProps 或使用 pages/ 目录的代码。只要明确说“用 App Router 写”,准确度就会提高。另见 提示词技巧。
package.json 里 next 的值原样贴上,再加一行“App Router、TypeScript”,生成代码和项目对不上的情况就会减少。Next.js 16.3 还加入了让编程代理无需设置即可读取与项目版本相符文档的机制(Next.js 16.3)。
总结
本文要点如下。
- AI 推荐 Next.js 的理由:官方推荐 / 全都有 / 上线路径短——都成立,但与“最适合你”是两回事
- React 官方建议新应用从框架起步,同时也给出了为学习基础而从零开始的路径
- 用“做什么”“搜索流量”“登录与数据库”“React 基础”“放置位置”这5个问题和分界线表来决定
- Next.js 在 Node.js 服务器和 Docker 上能跑全部功能,静态导出只支持部分。Vercel 并非必需
- 要用的话,按月打安全补丁是前提(2026年7月起)
- 3大坑:全都 use client / 事后才知道放置位置的条件 / AI 用旧的 Pages Router 写
AI 说“用 Next.js 吧”的时候,在点头之前先停下来想想是否真的需要,是专业做法的第一步。Next.js 很强大,但第一个项目未必需要它。
常见问题
是的。Next.js 建立在 React 之上,组件、props、state 这些 React 基础概念必不可少。按照“React 官方学习页面 → 用 Vite 做个简单的 SPA → 再学 Next.js”的顺序,就不容易把 React 的内容和 Next.js 的内容混在一起。
名字相似,但是两回事。React Native 用来做手机应用(iOS/Android),Next.js 是做 Web 应用的框架。想做手机应用的话,可以看看 React 官方针对原生应用列出的 Expo。
可以,但每家都有条件。Cloudflare Pages 的免费额度是每月最多500次构建(官方限制),Netlify 的 Free 每月300积分,达到上限就停止(2025年9月之后的新账户)。静态导出的话,任何能托管静态文件的地方都能发布。各家免费额度的条件整理在 PaaS(Vercel 等)是什么。
默认用 Server,只有界面交互用 Client。用到 useState / useEffect / onClick 等的部分需要 'use client'。数据获取(fetch、数据库访问)放在 Server。拿不准时先按 Server 写,报错的部分再拆成 Client,这样比较好整理。
是同一系列。AI 当作“标配”推荐的工具(Docker、Next.js、TypeScript 等),是因为用的人多才推荐,并不一定最适合你。新手容易以为“AI 推荐 = 我也需要”,本文的主旨是按规模、目的、学习阶段先做一次自己的判断。