前端优化之避免桶文件 barrel file

什么叫桶文件

我不知道你们有没有这种习惯,我是喜欢把一些相似的东西放在同一个文件里,例如:

// src/svg/index.ts
export { default as SvgA } from './a.svg'
export { default as SvgB } from './b.svg'
// ...

这种文件叫做桶文件(barrel file)。

然后用的时候就:

import { SvgA } from '@/svg'

桶文件的优点

这样 import 的时候有提示,省事;以及统一在一个地方命名,尤其多人合作的时候,能避免同一个 svg 文件导出不同的名字,如:

// 小王这么写
import HelloWorld from 'hello-world.svg'

// 小李这么写
import SvgHelloWorld from 'hello-world.svg'

// 小马这么写
import HelloWorldSvg from 'hello-world.svg'

桶文件的缺点

桶文件是损害了性能的,例如,A 页面只用到了 SvgA,但是打包的时候 SvgB 也被打包进去了,所以我们要避免这种情况。

解决办法

解决方法当然是,不要用这个桶文件,直接引用具体的文件,例如:

// src/pages/a.tsx
import SvgA from '@/svg/a.svg'

// src/pages/b.tsx
import SvgB from '@/svg/b.svg'

如非特别声明,本站作品均为原创,遵循【自由转载-保持署名-非商用-非衍生 创意共享 3.0 许可证】。

对于转载作品,如需二次转载,请遵循原作许可。