Blog Detail

我是如何学习 Next.js 的

记录我从路由、布局到页面拆分的学习过程。

2026-05-17·10 分钟阅读·6 个章节
Next.jsReact前端
Next.js 博客文章封面图
基于 Next.js 构建个人博客时的页面效果。

一、为什么我会认真学 Next.js

我最开始接触 Next.js 时,并不是冲着“新框架”去的,而是因为它把路由、布局、服务端渲染、SEO 这些真实项目会碰到的问题放到了同一套框架里。

如果我一直只停留在 React 单页应用阶段,很多事情其实是练不到的。比如页面级布局该怎么组织、文章详情页怎么做静态生成、动态路由和搜索引擎之间是什么关系,这些都需要在一个更接近真实项目的环境里理解。

对我来说,学习 Next.js 的核心不是“会用几个 API”,而是逐渐建立一种页面工程思维。

二、我给自己拆的学习顺序

我没有一上来就想把博客做成完整版,而是按更稳的顺序推进:

阶段目标重点练习
第一阶段把页面搭出来布局、组件拆分、响应式
第二阶段抽离假数据列表渲染、props、统一内容源
第三阶段动态路由slug、params、404
第四阶段内容渲染Markdown / MDX、文章结构
第五阶段上线部署构建、环境差异、线上验证

这样拆的好处是,我每次只处理一个主要问题,不会同时被 UI、数据、部署、配置压住。

Next.js 学习路线图示意图
把学习过程拆成阶段之后,页面、数据、路由、内容系统之间的关系会清楚很多。

三、这一阶段我重点练什么

我现在最重视的是这几个基础能力:

  • 能不能先把页面结构拆清楚
  • 能不能让组件只负责一件事
  • 能不能让数据和视图分离
  • 能不能在改功能时不把原来的页面打乱

这些听起来不像“炫酷功能”,但它们决定了项目能不能持续往下做。

比如首页里的文章卡片、项目卡片、标题区块,如果我一开始就拆清楚,后面加筛选、加主题切换、加 MDX 时就不会特别痛苦。

四、哪些概念是我后来才真正理解的

以前我以为“学会 Next.js”就是会写 app/page.tsx,后来才发现真正重要的是理解下面这些概念:

1. 路由不是字符串跳转那么简单

当我写:

tsx
<Link href="/blog/learn-nextjs">阅读文章</Link>

我其实是在依赖一整套路由约定。/blog/[slug] 对应的是一个动态段,页面拿到的不是固定路径,而是运行时的参数。

2. 页面结构最好早一点稳定

像这样:

tsx
<main>
  <HeroSection />
  <FeaturedProjects />
  <LatestPosts />
</main>

当页面层只有“区块组织”时,后面加数据、换样式、做响应式都更从容。

3. 内容系统会反过来影响代码结构

一旦博客开始支持 Markdown 或 MDX,文章就不再只是“几段写死在 JSX 的文字”,而会变成内容文件、元数据、路由和渲染器一起协作的系统。

官方文档Next.js App Router 的 MDX 指南如果你想看 Next.js 官方推荐的 MDX 接入方式、文件结构和组件映射方式,这篇文档非常值得反复看。

五、我现在会怎么开始一个新页面

如果现在让我重新开一个页面,我大概率会先写一个很轻的骨架:

tsx
export default function BlogPage() {
  return (
    <main className="pb-16">
      <section>{/* 页面头部 */}</section>
      <section>{/* 筛选与列表 */}</section>
      <section>{/* 分页 */}</section>
    </main>
  );
}

然后再问自己:

  1. 哪些区块会重复
  2. 哪些数据以后会来自统一内容源
  3. 哪些交互状态应该进 URL

这样做虽然慢一点,但会让后面的迭代轻松很多。

六、下一步我准备怎么继续

接下来我会继续把文章系统从普通 Markdown 迁到更贴近官方路线的 MDX,让文章内容变成真正可扩展的内容模块。

这意味着我之后不仅能写普通段落、列表和表格,还能逐步把文章里的提示块、代码演示甚至自定义组件也纳入内容系统。

如果说前几步是在练“页面怎么搭”,那这一步开始就是在练“内容系统怎么长出来”。