代码分割

代码分割:路由级、组件级、功能级拆分,让用户不为暂时用不到的代码付费。

#type / concept #status / evergreen #tech / dev / frontend

[!info] related notes

代码分割

一句话定义

代码分割是将整个 bundle 拆成多个小块,让用户只下载当前页面需要的代码,不必为”暂时用不到的代码”付费。

核心内容

分割维度

路由级拆分

每个页面单独打包,用户访问 A 页不必先下载 B 页的全部代码。

// React Router 懒加载示例
const Home = lazy(() => import('./pages/Home'));
const Detail = lazy(() => import('./pages/Detail'));

组件级拆分

重组件、弹窗、编辑器、图表库等按需加载。

功能级拆分

适合延迟加载的功能:

  • 富文本编辑器
  • 地图
  • 3D/可视化
  • 报表
  • 上传裁剪
  • 音视频能力

分割原则

  • 首屏相关代码必须优先加载
  • 非首屏功能延迟加载
  • 公共代码抽取为独立 chunk
  • 避免重复依赖

边界与易混淆点

代码分割 vs HTTP/2

HTTP/2 多路复用降低了并发成本,但分割仍有价值:

  • 减少首屏加载量
  • 利用缓存(公共 chunk 不变)
  • 便于按需加载非首屏功能
创建于 2026/4/6 更新于 2026/5/27