Skip to main content
Blog
Next.jsPerformanceEngineering

一行指令,223 KB

一个没有状态、没有副作用、没有事件处理的营销页,却把自己当作 JavaScript 发给了浏览器。修法是删掉一行。

ToolGo Team
2026年9月15日
4 min read
分享:
一行指令,223 KB

先看数字

PageSpeed 给移动端性能打了 71 分。那是分数不是诊断,于是我们跑了一次生产构建,读了路由表。首页的 First Load JS 是 315 kB,站点其余部分都在 90 上下。

里面装了什么

页面文件以 "use client" 开头。这一行把整棵 React 树变成客户端组件,它 import 的一切都会跟着走:六百行布局、页面上的每一句文案、每一张插图。

我们查了它到底需要浏览器做什么。没有 useState,没有 useEffect,没有一个事件处理函数。它是客户端组件,只是为了调用两个国际化 hook——而这两个 hook 都有服务端版本,只是名字不同。

替换

十四个组件从客户端 hook 换到服务端 hook,并改成 async。那行指令删掉了。打字效果的标题和 FAQ 行本来就是独立的客户端组件,原样保留。

315 kB -> 91.8 kB

值得记住的部分

没有人是随手写下 "use client" 的。它在页面确实需要某个 hook 的早期被加上,然后在那个理由被重构掉之后留了下来。偶尔翻一下路由表,问问哪些页面比看起来更重,是值得的。

ToolGo Team

产品与工程

我们构建实用的SaaS工具,并分享我们的学习——从产品决策到技术深度剖析。