上次看到 umi作者云谦大佬在群里发的一个问题,我觉得颇有兴趣,记录下
问题
以下几种引入方式,在构建大小和速度上有啥区别
构建大小:
2==4==5,1==3==6, 2>1,因为es的产物会被tree-shaking掉,1类是cjs的产物; 5为啥会被1大,5是引入单个icons,1是引入整个包,还是因为cjs的产物无法被tree-shaking的原因, 因为cjs背后有其它依赖引入
构建速度:
我原本以为构建大小与构建速度成正比关系,构建大小越小,构建速度越快,其实不然,看云谦大佬的答案是
1==3~=2 > 4==5~6
需要tree-shaking的构建速度慢些,慢的原因正是因为需要tree-shaking,
类型提示
import {A} from '@ant-design/icons' // 1
import {A} from '@ant-design/icons/A' // 4
除了1 4,其它都没有??
why??难怪我经常碰过有些引入方式,经常没有类型提示,不过这里没有想通为啥只有1 4有
最佳实践
1
import {A} from '@antd-design/icons'; // 1