【ESM】几种组件引入方式的构建大小和速度

94 阅读1分钟

上次看到 umi作者云谦大佬在群里发的一个问题,我觉得颇有兴趣,记录下

问题

以下几种引入方式,在构建大小和速度上有啥区别

image.png

构建大小:

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