连看个纯文本博客都会卡?深挖吞噬现代网页的“JavaScript 膨胀”三大元凶

开发工具 2026年3月22日
如今的Web开发陷入了一种荒谬的怪圈:我们用MB级别的JavaScript代码,仅仅为了渲染几段普通的文字。支撑起这座“代码屎山”的,正是对框架的盲目崇拜、深不见底的依赖地狱,以及对“开发者体验”的极度纵容。是时候把网页的控制权从前端的自嗨中夺回来,还给用户的手机电池了。

不知道你最近有没有这种感觉:明明手机和电脑的处理速度每年都在狂飙,但打开一些极其简单的网页——哪怕只是个全是文字的博客或者新闻页面——屏幕却总要白上几秒,接着一个加载动画转啊转,最后内容才像便秘一样一块一块地蹦出来。

作为跑了十年科技线的记者,我看着 Web 技术从简陋走向繁荣,现在却眼睁睁看着它走向臃肿。业界把这种现象称为“JavaScript 膨胀”(JavaScript Bloat)。当我们在抱怨应用越来越卡、手机掉电越来越快时,很多时候罪魁祸首就是那些偷偷下载到你设备里、动辄几 MB 的 JavaScript 代码。

为什么我们会走到这一步?如果你去问前端工程师,他们可能会用一堆听不懂的术语来敷衍你。但如果我们剥开技术的包装,其实支撑起这座“代码屎山”的,无非是三个让人哭笑不得的支柱。

第一大支柱:用造航母的图纸造独木舟

曾几何时,网页是很单纯的。服务器把写好的 HTML 发给你,浏览器照着画出来,搞定。但自从 React、Vue 这种现代前端框架崛起后,一切都变了。

现在的行业现状是:不管你要做什么网页,哪怕只是一个展示公司地址和电话的静态页面,工程师们的肌肉记忆也是“先用 React 建个项目”。这就好比你只是想过河,工程师却偏要先在岸边建一个造船厂,然后当场给你造一艘核动力航母。这种被称为“单页应用”(SPA)的模式,要求浏览器在显示任何内容之前,必须先下载并运行一整套庞大的框架代码。

我们不妨来看一组残酷的数据。根据 HTTP Archive 的《Web Almanac》年度报告,2011 年,一个普通网页的 JavaScript 体积中位数大约是 50KB。而到了今天,这个数字已经飙升到了惊人的 500KB 以上,在移动端这个增幅更是超过了 600%。对于很多大型商业网站,加载 2MB 到 3MB 的 JavaScript 已经是家常便饭。这 2MB 听起来不大?要知道,人类登月时阿波罗计划的导航计算机,全部代码加起来也就几十 KB。

框架本该是解决复杂交互的利器,现在却成了所有网页的“强制入场券”。这种盲目的框架崇拜,是压垮网页性能的第一根稻草。

第二大支柱:买椟还珠的“依赖地狱”

如果你在科技圈有几个程序员朋友,你一定听过关于 node_modules(存放第三方代码库的文件夹)的段子——它是宇宙中最重的物体,连黑洞都比不过它。

现代软件开发讲究“不重复造轮子”,这本是个好主意。你需要格式化时间?下载一个库;你需要改变字体颜色?下载一个库。但问题在于,这种拼图式的开发模式彻底失控了。

我曾经见过一个真实的案例:一个开发者仅仅是为了在网页上把一个单词的首字母大写,就引入了一个庞大的第三方依赖包。更可怕的是,包与包之间还会互相依赖。你以为你只请了一个帮手,结果这个帮手带了他的一家老小,还有他七大姑八大姨的整个家族一起住进了你的代码里。

业界著名的“left-pad 事件”至今让人心有余悸。当时一个仅有 11 行代码的微小依赖包被作者下架,竟然导致全球无数大型知名项目瞬间崩溃。这不仅暴露了现代 Web 构建链的脆弱,更揭示了一个无奈的现实:现在的开发者,连最基本的代码都不愿意自己写了。大量的冗余代码(Dead Code)就像寄生虫一样,随着这些依赖包被打包进最终的网页,消耗着用户的流量和算力。

第三大支柱:开发者体验(DX)对用户体验(UX)的无情碾压

这是我觉得最核心,也最让人担忧的一点。

现在的科技大厂和明星创业公司里,开发者们普遍使用的是什么装备?通常是配备了 M3 Max 芯片的顶配 MacBook Pro,连着千兆级别的光纤网络。在这样的环境下,几兆的 JavaScript 代码瞬间就能加载完毕并执行,他们根本感觉不到卡顿。

但真实世界是什么样的?根据全球移动通信系统协会(GSMA)的数据,全球仍有数十亿用户使用的是千元级别的中低端安卓手机,在拥挤的地铁上用着时断时续的 4G 甚至 3G 网络。当开发者为了“自己写代码爽”、“能更快地下班”(即所谓的开发者体验 DX),而大量堆砌高度抽象的工具和层层嵌套的组件时,他们实际上是在把计算的成本转嫁给了普通用户(用户体验 UX)。

抽象是有代价的。每一层现代化的开发工具,都在消耗着手机的 CPU 周期。我们其实是在牺牲大众手中设备的电池寿命,来换取少数精英程序员的开发便利。这种技术上的傲慢,才是导致 Web 越来越臃肿的思想根源。

破局的微光,还是又一次轮回?

好在,物极必反,技术圈永远不缺自我纠错的声音。

最近两年,我惊喜地看到一些反叛者开始崭露头角。像 Astro 这样的新框架提出了“群岛架构”,承诺默认不向客户端发送任何 JavaScript;还有 HTMX 这种极其复古的技术重新翻红,主张回到 HTML 的初心,把复杂的逻辑全留在服务器端。

但这就引出了一个值得行业深思的争议点:我们现在高呼着“回归 HTML”、“服务器端渲染”,听起来是不是有点耳熟?没错,这简直就像是二十年前 PHP 和 JSP 时代的翻版。Web 技术的钟摆似乎永远在“重客户端”和“重服务端”之间来回摆动。

我们要问自己的是:这次的“反叛”,究竟是能真正让 Web 重新变得轻盈,还是说,我们只是发明了一种新的、更复杂的框架,来解决旧框架带来的复杂性?

Summary: JavaScript 膨胀的三大支柱,本质上是工程效率与用户利益之间的一场失衡。经过十年的野蛮生长,免费挥霍用户设备性能的时代必须结束了。我的判断是,未来两三年内,“零JS”或“微JS”将从非主流的极客玩具,正式变成大型商业项目选型的核心指标。如果企业还在执迷于用最重的框架去堆砌最简单的网页,他们失去的将不仅是页面加载的三秒钟,而是被这三秒钟耗尽耐心的整整一代用户。
JavaScript 膨胀前端开发JavaScriptWeb 性能ReactVue框架臃肿依赖地狱开发者体验HTML