Vue 项目里的代码分割:Webpack 真正帮你省下了什么

0 阅读

单页应用最容易被忽略的一个问题,就是“什么都先打进来”。

页面少的时候感觉不到,模块一多,首屏体积和初始化时间就会慢慢拉高。用户明明只访问了首页,却被迫把后台设置页、表单向导、图表模块一起下载了。

这就是代码分割存在的理由。

代码分割不是高级优化

很多人第一次接触 Webpack 的代码分割,会把它当成“后面再说的优化项”。可对 Vue 这种页面越来越多的单页应用来说,它其实很早就值得考虑。

因为只要页面结构明确、访问路径分层,自然就会想到:

  • 首页不该加载后台页代码
  • 列表页不该提前加载编辑器
  • 低频弹窗没必要跟首屏一起进来

Vue 路由懒加载就是最常见的切入点

在 Vue 项目里,代码分割最直接的入口通常就是路由级拆分。

1const UserList = () => import('./views/UserList.vue');

这行代码带来的不只是“写法更现代”,而是明确告诉打包器:这部分代码可以等真正访问时再加载。

Webpack 帮你做的,不只是拆文件

如果没有打包器,你很难优雅地把应用切成多个按需加载的模块。

Webpack 在这里做的是:

  • 找出依赖关系
  • 生成独立 chunk
  • 在运行时按需拉取

你写起来只是一行动态导入,真正复杂的事情都在背后。

别为了拆而拆

代码分割当然有好处,但也不是 chunk 越多越好。

拆得太碎,可能带来:

  • 请求数变多
  • 资源管理复杂
  • 公共依赖重复加载判断更难

所以最自然的拆分单位通常还是页面、重模块和低频功能,而不是所有组件都切成一个单独 chunk。

写在最后

Webpack 的代码分割真正省下来的,不只是几百 KB 体积,而是用户第一次进入页面时不必要的等待。

Vue 应用做大之后,按需加载几乎不是“可选项”,而是结构设计的一部分。你越早理解这一点,后面的性能成本越低。