NAVIGATION SYS
首页折腾手记造点东西投资笔记做点音乐想点事情

NCC-1701-D // SYSTEM ONLINE

Deep Space Viewport
造点东西

AI帮我造博客(五):前端选型——为什么是 Next.js?

舸扬
造点东西
发布: 2026-01-31
更新: 2026-03-06
标签博客搭建AI帮我造博客系列AI辅助开发前端
AI帮我造博客(五):前端选型——为什么是 Next.js?
本文字数:4703预计阅读:12 分钟

📖 本文是「AI帮我造博客」系列第五篇。上一篇:AI帮我造博客(四):后端选型——内容从哪里来?

TL;DR(30秒速览)

前端选型是博客搭建中最容易"选择困难"的环节。我在 AI 的帮助下,系统地梳理了渲染模式、主流框架、以及它们与 Strapi 的适配度,最终选择了 Next.js

选型维度
我的选择
核心理由
界面库React生态最强,优秀组件库多
开发框架Next.js页面加载快,还能自动更新内容
渲染策略增量静态生成既有静态页面的速度,又有动态更新的能力
路由模式新版路由是未来趋势,值得踩坑
AI 交互结构化提示词用约束换取精确方案,而非开放式问答

一句话总结:技术选型没有绝对的好坏,只有"适不适合"。对于内容驱动的博客,Next.js 的 ISR 是目前最完美的平衡点。

一、先搞懂问题:前端在整体架构中干什么?

上一篇我们选定了 Strapi 作为后端。它专注于内容管理,通过 API 提供数据。

那前端需要做什么?其实就三件事:

  1. 数据获取:通过 HTTP 请求从 Strapi API 拿到文章、分类、标签等数据
  2. 内容渲染:把数据变成用户能看到的 HTML 页面
  3. 用户交互:处理搜索、评论、导航等交互功能

听起来简单?问题在于"内容渲染"这一步有很多种方式——这就是让我头疼的地方。

在选择前端框架之前,必须先理解渲染模式——这是影响博客性能、SEO(即搜索引擎优化,让你的文章能被百度、Google 搜到)和用户体验的关键因素。

二、渲染模式:现代 Web 的四种核心策略

我被 Next.js 文档里的一堆缩写搞晕了:SSR、SSG、ISR、CSR... 这些到底是什么意思?

别慌,接下来我用"餐厅"的比喻来解释这四种渲染模式。看完你会发现,其实没那么复杂。

2.1 CSR(客户端渲染)= 自助火锅

工作原理

TERMINAL
用户访问 → 服务器返回一个空盘子(空 HTML)→ 浏览器拿食材(下载 JS)→ 自己动手涮(渲染页面)

服务器只给你一个基本的 HTML 骨架和一堆 JavaScript 文件。所有的"烹饪"工作都在用户的浏览器里完成。

这种方式的问题

  • 用户进门先看到空盘子(首屏加载慢)
  • 搜索引擎爬虫看不懂 JavaScript,只能看到空盘子(SEO,即搜索引擎优化困难)
  • 手机性能差的用户吃不上饭(依赖设备性能)

适合场景:后台管理系统、数据仪表盘——这些不需要被搜索引擎收录的应用。

结论:博客需要 SEO,CSR 直接出局。

2.2 SSR(服务端渲染)= 现炒现卖

工作原理

TERMINAL
用户点单(访问页面)→ 厨师(服务器)现场炒菜(生成 HTML)→ 上菜(返回完整页面)

每次有用户访问,服务器都会实时渲染一个完整的 HTML 页面。用户和搜索引擎都能直接看到内容。

优点

  • 菜永远是热的(数据实时最新)
  • 顾客一坐下就有菜看(首屏快)
  • 外卖评价员(搜索引擎)能看到完整菜品(SEO 友好)

缺点

  • 厨师累死(服务器压力大)
  • 高峰期容易翻车(并发能力受限)
  • 厨房要一直开着(服务器成本高)

适合场景:需要实时数据、个性化内容的应用,比如社交媒体信息流。

2.3 SSG(静态站点生成)= 预制菜

工作原理

TERMINAL
早上(构建时)→ 厨师把所有菜都炒好(生成静态 HTML)→ 放进保温柜(部署到 CDN,即内容分发网络,相当于在全球各地都放了保温柜) 用户点单 → 直接拿走

在部署之前,就把所有页面都渲染好了。用户访问时,直接返回静态文件,不需要任何计算。

优点

  • 出餐速度极快(毫秒级响应)
  • 可以放到全球各地的保温柜(CDN 加速)
  • 几乎不用厨房(服务器成本极低)
  • SEO 完美

缺点

  • 不管早上还是晚上,吃到的都是早上的味道(内容不更新)
  • 如果菜单有 1000 道菜,早上要炒很久(构建时间长)
  • 改一道菜,整个菜单都要重新炒一遍

适合场景:内容固定、更新不频繁的网站,比如文档站、落地页。

2.4 ISR(增量静态再生)= 预制菜 + 定时补货

这是 Next.js 的杀手锏,也是我最终选择的方案。

工作原理

TERMINAL
早上 → 先做好一批预制菜(生成静态页面) 用户点单 → 直接上菜(返回缓存版本) 同时后台检查 → 这道菜做了多久了? 如果超过保鲜期 → 后台悄悄重新做一份(后台重新生成) 下一位顾客 → 吃到新鲜的

核心理念:用户永远能快速拿到菜(缓存响应),但菜会在后台自动保持新鲜(按需更新)。

优点

  • 接近 SSG 的速度
  • 内容可以自动更新
  • 不需要每次修改都重新构建整个站点
  • 构建时间不随页面数量线性增长

缺点

  • 配置相对复杂
  • 内容更新有一定延迟(最长等于过期时间)

进阶技巧:分档 ISR

实际使用中,不同类型的页面可以设置不同的"保鲜期":

页面类型
刷新周期
理由
首页/列表15 分钟新文章需要较快出现
分类/标签1 小时变化不频繁
文章详情24 小时内容稳定,偶尔改错别字

更进一步:On-Demand ISR(按需刷新)

如果等不及"保鲜期"怎么办?Next.js 还支持"主动刷新"——当后端内容更新时,通过 Webhook(一种自动通知机制,就像厨房做好菜后按铃通知传菜员一样)通知前端立即刷新特定页面。这样既保留了静态页面的速度,又能做到"发布即生效"。

我的决策:采用分档 ISR 作为基础策略,后续再实现 On-Demand ISR 进一步优化。

2.5 渲染模式对比一览

维度
CSR
SSR
SSG
ISR
首屏速度最快最快
SEO最优最优
内容实时性实时实时构建时准实时
服务器负担极轻极轻
构建时间中等
托管成本最低

博客的最佳策略

  • 文章页:ISR(兼顾速度和更新)
  • 首页/列表页:ISR 或 SSG
  • 搜索功能:CSR(纯交互,不需要 SEO)

洞察:当技术文档像天书时,让 AI 用你能理解的比喻来解释。理解了原理,选型就不再是"盲选"。

三、前端框架生态:有哪些选择?

搞懂渲染模式后,接下来要选具体的框架了。

现代前端开发有两层结构,可以类比成"食材"和"厨房"的关系:

  1. UI 库(食材):React、Vue、Svelte —— 负责构建界面组件,是基础原料
  2. 元框架(厨房):Next.js、Nuxt、Astro —— 在 UI 库之上,提供路由、数据获取、渲染策略等完整解决方案,是把食材变成菜品的流水线

下面我让 AI 帮我逐个梳理这些主流元框架:

3.1 Next.js —— React 生态的标准答案

定位:混合渲染全栈 React 框架

核心特点

  • 支持所有渲染模式(SSG、SSR、ISR、CSR),可按页面级别自由选择
  • 文件系统路由:pages/blog/[id].js 自动成为 /blog/123 的路由
  • 内置图片优化、代码分割、TypeScript 支持
  • App Router(新版路由系统)支持 React Server Components(RSC,服务端组件,让部分代码在服务器运行,减少浏览器负担)

生态优势

  • GitHub 130k+ Stars,npm 周下载 6M+
  • 企业级验证:Netflix、GitHub、Notion 都在用
  • Strapi 官方示例首选,集成教程最多
  • shadcn/ui、Radix 等优秀组件库 React 优先

劣势

  • 学习曲线较陡(尤其是 App Router)
  • 部分功能与 Vercel 平台绑定较深(但可以用 Docker 容器化自部署,Docker 就像一个"标准集装箱",把应用打包好随处运行)

3.2 Astro —— 内容网站的性能之王

定位:零 JavaScript 的内容优先框架

核心特点

  • 默认输出纯静态 HTML,不发送任何 JavaScript
  • 部分水合(Partial Hydration):只有需要交互的组件才发送 JS

    💡 "水合"是什么?静态 HTML 就像一具"雕塑",好看但不能动。"水合"就是给雕塑注入灵魂(加载 JS),让它能响应点击、滚动等操作。"部分水合"意味着只给需要动的部分注入灵魂,其他保持静态。

  • 框架无关:同一项目可混用 React、Vue、Svelte 组件

性能优势

  • Lighthouse 性能分:99/100(因为客户端几乎零 JS)
  • 构建时间快(小规模项目)

劣势

  • 默认全静态,动态功能需额外配置
  • 没有内置 ISR 支持
  • 生态相对较新(2021 年发布)

适合场景:90% 静态内容、10% 交互的内容网站。

3.3 Nuxt —— Vue 生态的 Next.js

定位:Vue 开发者的全栈解决方案

核心特点

  • 支持 SSR、SSG、ISR(称为 Hybrid Rendering)
  • 自动导入:组件、组合函数无需手动 import
  • Vue 3 的 Composition API(组合式 API,让代码组织更灵活)和响应式系统

优势

  • Vue 生态最佳方案
  • 中文社区强大,学习资源丰富
  • 渐进式学习曲线

劣势

  • 生态不如 React/Next.js 丰富
  • 企业级案例相对较少

3.4 Remix —— 现代 Web 标准的布道者

定位:渐进增强的服务器优先框架

核心特点

  • 每次请求都 SSR,通过 HTTP 缓存获得静态速度
  • 基于 Web 标准(使用浏览器原生的数据获取方式,不造私有轮子)
  • 渐进增强:即使 JavaScript 失败也能工作

优势

  • 动态内容性能优秀
  • 无构建时间(与数据解耦)
  • 架构优雅

劣势

  • 无内置 SSG/ISR
  • 生态相对较新(2021 年开源)
  • 服务器成本比纯静态高

3.5 框架对比一览

框架
渲染模式
学习曲线
生态成熟度
博客适配度
Next.js全支持中高⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
AstroSSG 为主⭐⭐⭐⭐⭐⭐⭐
Nuxt全支持⭐⭐⭐⭐⭐⭐⭐⭐
RemixSSR 为主中高⭐⭐⭐⭐⭐⭐

四、我的选型决策过程

梳理完生态后,我让 AI 帮我做一个适合我的决策分析。

4.1 我的需求画像

面对 Next.js、Remix 这些神仙打架的框架,我没有直接拍脑袋。我决定让 AI 扮演架构师,基于我的实际约束给出建议。

为了避免 AI 给出“Next.js 和 Remix 都不错”这种模棱两可的废话,我必须把我的三个核心痛点明确告诉它:

  1. SEO 是生死线:必须被 Bing 和 Google 收录,首屏要快。
  2. 后端已锁死:必须配合 Strapi 自托管,不能依赖 Vercel 的 Serverless。
  3. 不想折腾基建:我是后端思维,不想在 Webpack 配置上浪费生命。

基于这些约束,我编写了如下 Prompt(提示词):

科普:什么是 Prompt?
简单说,Prompt 就是你发给 AI 的指令。就像你需要给员工下达清晰的需求单一样,你给 AI 的指令越精准、背景信息越全,它干出来的活就越漂亮。如果你只扔给它一句"帮我选个框架",它大概率会回给你一篇正确的废话。

下面是我为了这次选型,专门打磨的一个结构化 Prompt:

Prompt 示例:

"作为一名资深全栈架构师,请协助我进行博客项目的前端技术栈选型。

项目背景:

  1. 核心需求:构建一个面向技术读者的个人博客,既要极致的 SEO(First Contentful Paint < 1.0s),又要具备现代 Web App 的流畅体验(如路由无刷新跳转)。
  2. 数据特征:预计 100-500 篇文章,每周更新 1-3 篇,偶尔需要修改旧文(需要考虑缓存失效问题)。
  3. 后端环境:已确定使用 Strapi + Postgres 自托管方案,提供 REST API。
  4. 团队配置:我是一名偏后端工程师,熟悉 React 基础,但不想在 Webpack/Vite 配置上花费太多精力。
  5. 交互需求:必须包含全站搜索、TOC 目录导航和评论系统。

请对比 React 生态下的主流方案(Next.js / Remix / Vite+React),并重点回答:

  • 针对我的 SEO 和性能需求,哪种渲染模式(SSR/SSG/ISR)最合适?
  • 考虑到 Strapi 后端,哪个框架的数据获取(Data Fetching)集成更优雅?
  • 请给出一个明确的推荐结论,并以此结论列举 3 个最大的潜在坑点。"

4.2 为什么这个 Prompt 有效?(AI 交互复盘)

这也是我想分享的一个重要技巧。如果只问 "哪个前端框架最好?",AI 只会像文档复读机。上面这个 Prompt 之所以能得到高质量建议,是因为它严格遵循了 Persona (角色) + Context (上下文) + Task (任务) + Output (输出要求) 的"提问公式"。

我总结了其中的四个设计巧思,你可以直接复用到其他技术决策场景中:

  1. 设定专家人设 (Persona Setting)

    "作为一名资深全栈架构师..."
    作用:拉高 AI 的回答水位。如果不加这句,AI 可能会平铺直叙;加了这句,AI 就会开始思考权衡(Trade-off),比如成本、维护难度、生态兼容性等架构师才考虑的问题。

  2. 前置"硬约束" (Context & Constraints)
    我没有只说 "我要写博客",而是把边界条件卡得很死:

    • 性能指标化SEO + First Contentful Paint < 1.0s,这直接排除了纯 SPA 方案。
    • 资源具象化偏后端工程师 + 不想折腾 Webpack,这暗示 AI 不要推荐过于底层、需要大量魔改配置的方案,要推荐开箱即用的框架。
  3. 限制竞品范围 (Scope Limiting)

    "请对比 React 生态下的主流方案..."
    作用:防止 AI 发散。圈定 React 生态能保证建议的落地可行性,避免它给你推荐虽然好用但你完全不熟悉的技术栈(比如 Go 或者 Rust 的前端框架)。

  4. 强制"反向思考" (Negative Tactic)

    "请给出一个明确的推荐结论,并以此结论列举 3 个最大的潜在坑点。"
    作用:这是最高明的一手。大多数 AI 倾向于说好话(讨好人类)。强制它列出**"坑点"**,不仅能验证这个方案是否真的适合你,还能帮你提前做好心理准备(比如 Next.js 的 App Router 学习曲线确实陡峭)。

一句话经验:你给出的约束(Context)越具体,AI 帮你做的决策产生的价值就越高。

4.3 排除法:先划掉不合适的

Astro

  • 优点:性能极致,简单直观
  • 问题:没有内置 ISR,内容更新需要重新构建部署
  • 结论:如果我的博客只是静态展示,Astro 是首选。但我希望改个错别字不用触发整个部署流程,暂时排除

Remix

  • 优点:架构优雅,动态性能好
  • 问题:每次请求都走服务器,成本比静态高;生态较新
  • 结论:作为新手,我需要更多社区资源和教程,暂时排除

Nuxt

  • 优点:Vue 上手更快,中文资源好
  • 问题:很多我眼馋的 UI 组件库(比如 shadcn/ui)是 React 优先
  • 结论:如果不是为了 UI 生态,Nuxt 其实是很好的选择,惜败

4.4 最终选择:Next.js

Next.js 胜出的理由

  1. ISR 完美适配博客场景

    • 文章发布后静态化,访问速度快
    • 修改错别字后,1 小时内自动更新
    • 不需要手动触发重新部署
  2. 生态最强,资源最多

    • 遇到问题最容易找到答案
    • Strapi 官方集成示例
    • shadcn/ui 等优秀组件库
  3. 未来可扩展

    • App Router 支持 React Server Components
    • 可以逐步添加复杂功能(用户系统、Newsletter 等)

4.5 关于 App Router 的决定

Next.js 有两套路由系统:

  • Pages Router:经典方案,稳定成熟
  • App Router:新方案,支持 React Server Components

App Router 的坑确实很多。举个最典型的例子让你感受一下:很多旧的第三方库一用就报错 window is not defined

我问 AI 为什么会这样,AI 解释说:

"Server Component 在服务器运行,没有浏览器里的 window 对象。你需要在组件文件顶部加 'use client' 指令,把它标记为客户端组件。"

这个 'use client' 就像是一张"特许通行证",告诉 Next.js:"这一小块代码,请按老规矩在浏览器里跑,不要在服务器上瞎折腾。"

我的决策:虽然坑多,但 RSC 是 React 的未来。做新项目,肯定要选未来的技术栈。踩坑的过程也是学习的过程。

五、技术决策的一般规律

回顾整个选型过程,我总结了几条规律:

5.1 按项目类型选择

内容更新频率
推荐方案
核心特征
低(周/月更)Astro极致性能
中等(日更+偶尔修改)Next.js ISR性能与动态平衡
高(实时/个性化)Remix SSR 或 Next.js SSR实时交互优先

5.2 按团队背景选择

团队情况
推荐方案
理由
前端新手Astro语法简单,概念少
React 熟练Next.js充分利用生态
Vue 背景Nuxt无缝过渡
追求前沿Remix学习现代 Web 标准

5.3 按成本和部署方式考量

方案
托管成本
说明
Astro SSG最低纯静态托管,CDN 即可
Next.js ISR (Vercel)平台托管,零配置
Next.js ISR (Docker)自建服务器,完全可控
Next.js SSR中高需要持续的服务器资源

关于部署方式的选择

  • Vercel 等平台托管:零配置、自动扩容,适合快速上线
  • Docker 容器化部署:环境隔离、版本可控、易回滚,适合自建基础设施

六、小结

前端选型这一步,我通过 AI 的帮助,建立了系统的知识框架:

  1. 理解渲染模式:CSR、SSR、SSG、ISR 各有适用场景
  2. 了解框架生态:Next.js、Astro、Nuxt、Remix 各有所长
  3. 匹配自身需求:博客场景 + React 生态 → Next.js ISR

最终选型:

  • 框架:Next.js 14(App Router)
  • 渲染策略:分档 ISR(首页 15min,分类 1h,详情 24h)
  • 部署方式:Docker 容器化(自建镜像仓库,完全可控)
  • 未来优化:On-Demand ISR(发布即生效)

如果你是新手,这些概念可能听起来还有点晕。没关系,只要记住一点
Next.js 帮我们搞定了最难的"做饭"(渲染)环节,我们需要做的,只是把"食材"(内容)准备好。

下一篇,我们不再纸上谈兵,直接开始动手写代码——从设计和实现一个高颜值的首页开始。

航海日志

本次航线
遇到的暗礁
带回的货物
下一站
前端选型被渲染模式概念绕晕系统的技术选型方法论首页设计与实现

📚 AI帮我造博客系列导航

上一篇:AI帮我造博客(四):后端选型——内容从哪里来?
下一篇:AI帮我造博客(六):零设计基础做首页——从蒙眼指挥到截图驱动的三轮进化

END OF LOG_
ID: AI-BUILD