2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
你好,开发者社区!👋
在我们上一篇关于解构构建过程的文章中,我展示了如何通过独立组件和树摇技术将我们的 YMS 项目包体积从 40MB 减少到 15MB。但是,作为优秀的工程师,我们并未止步于此。15MB 仍然很大。
每当我们运行 ng build 命令时,终端都会输出一大堆包含数百个文件(代码块)及其不同大小的信息。但 Angular 究竟生成了什么?浏览器如何“消化”这个构建文件夹?更重要的是,我们如何发现隐藏在这些兆字节中的内容?
今天,我们将打开编译的黑盒,理解性能背后的数学原理,并对我们的应用程序进行一次 X 光检查。
1. 浏览器如何理解你的构建文件夹?
当你使用 Angular 编程时,你编写的是 TypeScript,使用 SCSS,并创建动态模板。但浏览器(Chrome、Edge、Safari)对这些并不“懂”。它只理解 Web 的三大基石:HTML、CSS 和纯 JavaScript。
你的打包工具(在 Angular 21 中是 Esbuild)的作用是将你复杂的工程代码翻译成这种基本格式。结果会输出到 dist/ 文件夹中。但浏览器是如何读取这些内容的呢?
- 入口点: 浏览器下载 index.html。这是一个微小的文件,屏幕上几乎没有任何内容,但它包含了指向你的 CSS 的 <link> 标签和指向你的 JavaScript 的 <script> 标签。
- 下载与阻塞: 浏览器开始下载你的主文件(main.js)。魔法(或悲剧)就发生在这里。与仅在屏幕上显示的 2MB 图像不同,2MB 的 JavaScript 文件需要由浏览器的主线程进行下载、解析、编译和执行。
白屏: 当浏览器执行这段沉重的 JavaScript 时,它会“卡住”。不会绘制任何界面,点击也无响应。这就是著名的 TTI(可交互时间)瓶颈。这就是为什么大文件是致命的。JavaScript 的体积不仅在网络上代价高昂(下载),在用户手机或电脑的 CPU 上执行时代价更是极其昂贵。
2. 解读终端:什么是“代码块”?
既然知道巨大的文件会使浏览器卡死,Angular 便采用了“分而治之”的策略。当我们运行 YMS 的构建时,会收到以下日志:
初始代码块文件 | 名称 | 原始大小
styles.css | styles | 1.10 MB
main.js | main | 19.33 kB
chunk-DXO7V6OT.js | - | 26.94 kB
| 初始总计 | 1.18 MB
懒加载代码块文件 | 名称 | 原始大小
chunk-QPFHIJ3Z.js | - | 513.35 kB
editar.component-US2MQII7.js | editar-component | 342.09 kB
painel.component-CX2TJGIN.js | painel-component | 281.48 kB
...以及另外 390 个懒加载代码块文件。使用 "--verbose" 显示所有文件。
对于不知情的开发者来说,看到生成了“390 个文件”可能看起来像是个错误。实际上,这是架构成功的证明。
什么是代码块? 它是你系统的一个孤立片段。名称中的字母数字代码(DXO7V6OT)用于缓存破坏:如果你仅更改了这部分内容
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。