注,以下内容过于基础,对于"老鸟"可以跳过文章前面,直接看最后最需要了解的知识点: React 的服务器组件和客户端组件。
前言
首先很多人疑惑为什么要学习 next.js 技术,我从客观角度帮你分析,你需不需要:
- 一个是未来你想做
remote也就是远程开发者,next.js几乎是必备的,因为它最大的优点之一就是全栈,可以将前后端在一起做
这里我简单解释一下,全栈是指前端页面和后端接口服务都可以做,但实际上复杂应用一般还是会前后端分离,但鉴于国外很多小公司,面对的用户数量并不多,所以使用一个技术快速验证商业想法才是最主要的,这是 next.js 很受欢迎的原因。
- 一个是对
seo有强烈需求的,seo你简单理解就是你的网站内容能被搜索引擎爬虫爬到,然后用户搜索的时候,你的页面有机会呈现在搜索引擎中,这是我们传统的单页面应用(SPA)做不到的,当然也有一些其他办法,但没有next.js直接。
但是任何技术有利有弊,国内为什么不流行 next.js 的最大原因就是很多 B端 后台系统,根本用不着 next.js ,首先是前后端分离在国内是常见的技术合作模式,其次 B端 后台系统不需要 seo, 只有首页和官网可能需要。
Next 和 React 的区别
简单说一下 react 和 next.js 的区别。
本质:Next.js 是一个用于构建全栈 Web 应用程序的 React 框架。
-
React是一个库,只负责应用的视图层。开发者需要自行选择和配置路由、数据获取等生产级功能。 -
Next.js是一个框架,它在React的基础上,提供了一整套开箱即用的生产就绪功能,并遵循特定的约定和最佳实践。
这里咋们就不说太多概念的东西,例如 Next.js 提供了哪些常见的开箱即用的功能,我们直接上手(毕竟初学看到了这些概念也不知道具体是什么意思)。
学习前提
- 只需要基本的
HTML、CSS和JavaScript知识,和基本会使用一点React就可以开始学习Next.js。 - 需要你安装了
Node.js(版本建议 20 以上) - 安装命令:
npx create-next-app@latest- 然后会让你输入项目名称,你可以直接回车默认,也可以输入你喜欢的名称。
- 最后设置一些选项,等待下载完依赖包,就可以完成安装了

最后使用 npm run dev(你用 pnpm 就 pnpm run dev) 就可以启动了:

对于访问的 URL(如 /),Next.js 在 app 目录下找到对应的 page.tsx 组件。
Next.js 项目结构解析
一个基础的 Next.js 项目包含以下核心部分:
-
4个主要文件夹:.next, node_modules, public, src (或 app)
- .next: 是构建输出目录,自动生成,无需手动修改。这是当你运行 npm run dev、npm run build 或 npm run start 时,Next.js 构建工具链生成的优化后的生产就绪代码,例如包含编译后的 JavaScript 和 CSS 文件。
- node_modules: 是安装第三包包的目录
- public: 静态资源目录, 例如图片和字体都可以放进来。
- src/ 或 app/ - 应用源代码目录(你的主战场):这是你作为开发者最常工作和编写代码的地方。
-
10个左右配置文件:包括 package.json、Next.js 和各类工具的配置文件。
-
package.json,主要包含以下两部分:
- 依赖管理:列出 next, react, react-dom 等核心库。
- 脚本命令:定义 dev (开发), build (构建), start (生产启动), lint (代码检查)具体使用的命令是什么。
-

-
next.config.js (Next.js 配置)
-
tsconfig.json (TypeScript 配置)
-
eslint.config.js (代码规范检查)
-
tailwind.config.js (Tailwind CSS 配置)
-
.gitignore:版本控制忽略文件。
-
README.md:项目说明文档。
-
next-env.d.ts:Next.js 的 TypeScript 类型声明。
-
favicon.ico 浏览器标签页图标。
-
globals.css 全局样式文件。
-
layout.tsx 根布局:定义所有页面共享的 UI(如导航栏、页脚)。
-
page.tsx 首页组件:对应路由 / (localhost:3000) 的页面内容。
-
服务器从根布局 layout.tsx 开始渲染(也就是 app 下的 layout 文件开始渲染 )。虽然是从 layout.tsx 渲染,但 layout.tsx 主要作用是共享 UI,也就是例如头部导航栏所有组件一般都会用到,所以 layout.tsx 里面的代码会共享给所有组件,但如果你只看当前路由渲染的内容,是在 page.tsx 文件中。
对于访问的 URL(如 /),Next.js 在 app 目录下找到对应的 page.tsx 组件。

React 服务器组件核心概
根本性变革
RSC(React Server Component 也就是 React 服务端组件) 是 React 团队引入的新架构,并已被 Next.js 广泛采用。
它彻底改变了 React 组件的构建方式,将组件明确划分为两种类型:服务器组件和客户端组件。
两种组件对比
| 特性 | 服务器组件 | 客户端组件 |
|---|---|---|
| 默认状态 | Next.js 中所有组件默认都是服务器组件 | 需要明确使用 'use client' 指令 |
| 运行环境 | 在服务器端渲染 | 在浏览器端渲染 |
| 能力/优势 | 执行服务端任务: • 直接读取文件 • 从数据库获取数据 | 实现交互性: • 使用 React Hooks • 处理用户交互事件 |
| 限制 | 不能使用 React Hooks 或处理用户交互 | 不能执行服务端任务 |
关键:
- 服务器组件用于等待异步操作(如数据获取)完成后渲染内容。其中不能使用 React 的 Hook,只有客户端组件才可以,并且需要在文件开头,写上 'use client' 字符串,表明是客户端组件!