☰
狠狠吐槽一下SSR/Next.js(一):别跟我吹 SSR 了,我只是想做个网页而已
2026/10/13 22:58:02 网站建设 项目流程

朋友们,大家好。

在开始今天的暴论之前,请允许我做一个悲伤的表情。就在几年前,我还是个满腔热血的“追新族”,谁家框架新、谁家理念潮,我就跟谁走。那时候,Next.js和它的SSR(服务端渲染)就像是我前端生涯的一束光,照亮了我通往“性能优化”和“SEO友好”的康庄大道。

然而,现实就像一盆冰水,专门浇我这种“追光者”的头。如今,当我再次看到项目架构里那个硕大的next文件夹,我只想对它说一句:

“这福气给你,你要不要啊?”

今天,我就来好好掰扯掰扯,我是怎么从一个Next.js的“舔狗”,变成一个逢人就劝“快跑”的吐槽役的。

第一宗罪:复杂度——把简单问题复杂化的艺术

我永远忘不了用create-react-app的日子。多纯粹啊!一个index.html,一个App.js,所有的逻辑都在那儿,清清楚楚,童叟无欺。写个博客?静态页面?直接丢到Nginx或者OSS上,天下我有。

直到我遇到了Next.js。为了一个简单的营销落地页,我被迫构建了一个“宇宙级”的项目结构。pages、components、lib、styles、public……光目录就比我的人生规划还复杂。

为了获取一点数据,我不能再优雅地fetch了。我必须得区分:

  • 这是getStaticProps(静态生成)吗?
  • 还是getServerSideProps(服务端渲染)?
  • 或者是getStaticPaths(动态静态生成)?

一个简单到爆炸的请求,我愣是得考虑它在哪个生命周期、在服务端还是客户端、构建时跑还是请求时跑。我只是想拿个数据展示一下,不是想造火箭啊喂!这种过度工程化的设计,让一个本应简单的UI渲染,变成了一场对Node.js后端知识的“高考”。

第二宗罪:SSR的谎言——说好的“性能”呢?

“服务端渲染,首屏直出,性能爆炸!”——这是他们当初画的饼。

结果呢?每次我刷新页面,都得眼睁睁地看着浏览器转圈圈,等那个该死的Node.js服务器去执行我的getServerSideProps。它要去数据库查数据,要去第三方API拿信息,还要在服务器上把React组件渲染成HTML字符串。

这一套组合拳下来,首屏加载的“时间线”被无限拉长。用户看到的“白屏”时间,从客户端渲染的“下载JS-执行-渲染”,变成了“等待服务器响应-下载HTML-下载JS-水合(Hydration)”。

是的,你没听错,还有个叫“水合”的玩意儿。服务器给你发了个“静态尸体”(HTML),你的浏览器还得下载一堆JS,然后费劲巴拉地给它“注入灵魂”,让这个页面“活”过来。这个过程不仅慢,而且极其消耗服务器资源。

说好的“性能优化”呢?我怎么感觉是从“客户端慢”变成了“客户端和服务端一起慢”?

第三宗罪:开发体验的噩梦——VSCode都救不了我

曾经,我的开发环境简单而美好。npm start,然后享受热更新。

现在呢?next dev,一个“看起来很美”的命令,背后却是一个巨大的“黑盒”。

  • 编译报错:天书一样的错误堆栈,总是在next/dist的深处等你,让你怀疑自己写的到底是JS还是某种神秘学符号。
  • Fast Refresh失灵:传说中秒级的更新,在稍微大一点的项目里,直接变成“慢速刷新”。改一行CSS,整个页面给你重新编译一遍,等的花儿都谢了。
  • 路由全靠文件名:pages/blog/[slug]/[...catchAll].js。这种“基于文件系统的路由”在复杂项目里就是一个巨大的迷宫。想找一个页面对应的组件?你得先在文件夹里玩一把“密室逃脱”。

第四宗罪:生态绑架——要么全盘接受,要么滚蛋

Next.js就像一个控制欲极强的伴侣。它告诉你,要用它,就得接受它的一切。

  • 想用别的路由库?不行,它是“文件系统路由”原教旨主义者。
  • 想换个数据 fetching 的方式?不行,你得用它的SWR或者React Query,而后者也渐渐变得“Next.js 化”。
  • 想部署到别的平台?行,但你会发现Vercel才是它的“亲爹”,部署体验和优化支持简直是天壤之别。这哪里是开源框架,这分明是Vercel的“免费流量入口”和“付费转化漏斗”。

它的哲学是:“你不必理解它,只需要信仰它。” 然而,我信仰的是简单和可控,不是一个把我当傻子、强迫我按它规矩办事的“黑盒框架”。

结语:去它的“全栈”,我只要“前端”

我知道,我知道,肯定会有人跳出来说:“那是你不会用!”、“是你项目太小,体会不到它的好处!”、“这是未来的趋势!”

是的,也许它适合你,适合那个拥有千人团队、需要极致SEO和复杂状态管理的“超级应用”。

但对我来说,对于我手上那80%的、业务逻辑不算变态、用户量不算巨大的普通项目来说,Next.js和SSR就是一场彻头彻尾的“降维打击”——用大炮打蚊子,把我和团队都轰得外焦里嫩。

所以,我受够了。

我受够了为了“可能有的性能问题”去引入“绝对有的复杂性问题”。
我受够了把我的前端代码绑在一台随时可能崩溃的Node.js服务器上。
我更受够了那种为了“全栈”而“全栈”的傲慢。

从明天开始,我就要把我的项目迁回Vite + React + React Router。谁爱SSR谁去,反正我就要我的纯静态文件。把打包好的文件丢到CDN上,让Nginx去处理缓存,这种简单、直接、可靠的感觉,真好。

去你的Next.js,去你的SSR。这一次,我要夺回属于我自己的“前端自由”!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询