import 按需加载可以让,没有被引用的模块不会被打包进来,
减少我们的包大小,缩小应用的加载时间,呈现给用户更佳的体验。
https://github.com/ant-design/babel-plugin-import
yarn add @babel/plugin-proposal-decorators babel-plugin-import
对于组件库而言,按需加载尤其重要,
用户只打包进他们所使用的组件的相关代码,从而实现最高效的加载体验,而这样的体验不仅是对单个组件库的要求,希望所有组件库都能做到。
没有做按需加载之前,如果你使用了 A 模块中的某段代码,则可能导致整个 A 模块的所有代码都被打包进用户的最终产物中;
即使你只使用了一小段,典型如 Lodash;
所以会有 lodash.isequal 这样的分拆包出现。
import的实现方式
实现方式有两种:
- babel-plugin-import 插件,适用于每个组件都有相应的文件夹,需要底层webpack为每个组件库做配置。
- TreeShaking,适用于组件库导出 ES 模块,强烈推荐
block 区块
如果已经有很成熟的原子组件库,如 antd 了,那么不要再做一系列原子组件,从业务或上层组件着手。
在组件未开发完成之前,不要做区块和模板。