webpack分离打包antd记录

时间:2024-05-20 16:24:09

方式一:按需引入部分antd并按组件分离打包

希望得到的结果是将antd按组件加载,减少首屏加载的包大小;
webpack分离打包antd记录

antd 又依赖于相应的rc模块,所以,rc同样按功能组分离,
同时antd->moment->local->各种语言包存在依赖关系
统计结果:
首屏加载 js: 769Kb 个数:34

bundle antd rc moment local common 其他 合计
307.23Kb 154.95Kb 454.95Kb 104.05Kb 106.85Kb 157.67Kb 219.58 1.47M

如果在按需引入antd的timer-picker等时间相关的组件时,会同时加载moment的/locale的语言库,在我当前的场景中我只是用了中文,所以这部分开销几乎都是浪费的

方式二:外链引入antd

方式webpack分离打包antd记录
统计结果:
首屏加载 js: 987Kb 个数:11

bundle common antd moment local 其他 合计
297.92Kb 15.13Kb 1.11Mb 50.5Kb 3.77Kb 186.83Kb 1690.79Kb

如果选择加载所有的antd组件,local 可以做按需加载了,但是未使用到的组件就会在首次加载时全部加载,存在一部分宽带浪费;

方式三:将按需将部分ant及其依赖打包至common.js

webpack分离打包antd记录
统计结果:
首屏加载js: 868Kb 个数:8

bundle common 其他 合计
298.01Kb 819.08Kb 347.22Kb 1.43M

同样存在会同时加载moment的/locale的语言库的浪费

对比结果:

方式一 (非全量) 方式二(全量) 方式三(非全量)
包总大小 1.47M 1.65Mb 1.43M
antd相关 609.9Kb 1.11Mb 596.82Kb
首屏加载js 769Kb 987Kb 868Kb
首屏加载个数 34 11 8

其他知识点
1、antd 依赖于模块[“react”, “react-dom”, “moment”,“rc”]
2、antd 的版本分为 antd(308kb) 和 antd-with-local(425kb) 两个版本