Webpack/Vite 的构建优化你做过哪些?

前端开发第 11 / 13 题答题框架
参考思路:构建速度(缓存/按需编译/分包)→产物体积(tree-shaking/压缩/按需加载)→首屏(chunk 拆分/预加载)→度量(speed-measure/bundle-analyze)。报优化前后数字。

五个经典回答示范

回答一 · 校招应届版

我从速度和体积两方面讲:速度上,Vite 开发态按需编译、Webpack 用 cache 缓存和 thread 多进程;体积上,按路由懒加载做代码分割、tree-shaking 去掉死代码、用 bundle analyzer 找出大头依赖做替换。我在项目里把一个 2MB 的主包拆到 800KB,首屏只加载 300KB。

回答二 · 1-3年经验版

我优化过一个老后台的构建:先度量,构建 4 分钟、产物 12MB。逐步做:SplitChunks 抽公共依赖并配合 CDN externals、moment 换 dayjs、图标库按需引入、图片走压缩管线;速度上开启持久化缓存和 esbuild-loader 换掉 babel 转译。最终构建 90 秒、主包 2.8MB。所有改动都进了 CI 的体积检查,防止回弹。

回答三 · 资深版

构建优化我先分清目标:开发体验、构建时长、运行时加载三者手段不同。选型层面,新项目 Vite 的按需编译天然解决 dev 速度;存量 Webpack 项目按 ROI 排序做缓存、分包和转译器替换。产物治理靠机制:size-limit 卡阈值、可视化分析进流水线、依赖引入走 review。一次优化不如一条护栏。

回答四 · 追问应对

追问『tree-shaking 为什么有时不生效』:CommonJS 导出没有静态结构、副作用标注缺失,要用 ESM 且配置 sideEffects;『分包策略怎么定』:按变更频率分——框架层长缓存、组件库中缓存、业务代码短缓存;『首屏 JS 怎么再压』:SSR/ Islands、动态 import 低频模块、预加载关键 chunk。

回答五 · 反面示范

『构建优化就是把 webpack.config 里的 mode 改成 production,打包就变小变快了。』——点评:这只是一行开关,人人都会;面试官想听的是度量、分包、依赖治理和护栏机制。拿不出构建前后数字也说明没有真正做过优化。

怎么练这道题
  1. 打开 模拟练习,选择「前端开发」方向,限时 3 分钟作答本题。
  2. 对照上方答题框架,逐点检查:哪些要素没覆盖、哪里表达啰嗦。
  3. 用自己项目的真实经历替换框架中的占位内容,重讲一遍并录音回听。

这类题在真实面试中常被追问细节,
建议进入限时模式练一遍。

开始限时演练