定义
该项目的模块依赖关系图谱
生成机制
当 webpack 处理应用程序时,它会根据命令行参数中或配置文件中定义的模块列表【此处模块指的是js中的模块,代表一个个文件资源】开始处理。
从 入口 开始,webpack 会递归的构建一个 依赖关系图,这个依赖图包含着应用程序中所需的每个模块,然后将所有模块打包为 少量【通常只有一个】的、可被浏览器加载的 包文件 。
为啥要用它
可以避免在打包的时候,将未使用的模块打包。
依赖关系的组织方式
定义
指模块之间如何相互引用和依赖,以及这些依赖关系在打包过程中如何被分析和处理。
依赖方式
静态依赖
指在代码中 通过 静态 import 语法,明确、直接地引入模块,这些依赖在编译时就可以被 webpack 检测到。
动态依赖
指在代码中 通过 import() 语法,动态加载的模块,这些依赖仅在运行时才能确定,动态加载。
依赖的组织策略
通过依赖的组织策略的选择可以进行打包优化
- 模块化设计:通过合理划分模块,减少不必要的依赖。
保持单一职责,这样某个功能包可能就只需要在一个模块中使用,这样的话就能减少其他模块不必要的依赖,从而使得打包后文件更小。
- 懒加载:对于非关键功能,使用动态导入实现懒加载。
在某种事件触发之后才会执行 import() 加载指定内容。这样能保证首屏加载速度
- 依赖注入:在运行时动态决定依赖的加载,提高灵活性。
根据当前参数确定后续代码执行的功能模块,其他不使用的功能模块就可以通过 treeshanking 筛掉,减少打包体积,提高加载速度。例如,根据用户的角色或权限动态加载不同的功能模块。