模块与依赖的概念

在如今的模块化开发时代,我们的应用程序都是由一个个 模块 组装而成,每个模块都拥有小于完整程序的体积,使得验证、调试及测试变得轻而易举,同时提供了可靠的抽象和封装界限,使得应用程序中每个模块都具备了条理清晰的设计和明确的目的。简单点说,模块就是应用程序中的 最小不可分割 的单元,就像线程对于cpu一样,而我们每天所做的工作就是不断写各种模块来完成 最小的 功能单元

bqb

这些模块也不是孤立的,而是会互相依赖,最终形成如同 蜘蛛网 一般的复杂依赖网,这些复杂的依赖关系肯定不是我们人为来维护,而是通过类似webpack这种模块打包工具来管理。在webpack中,模块依赖的实现方式分为如下几种

这么多的依赖方式,那么在webpack中是如何进行模块解析的呢,请往下看

bqb

webpack模块解析的流程

在webpack中,使用一个叫做 enhanced-resolve 的库来进行模块解析,通过这个库,webpack可以处理三种形式的路径:

上述就是webpack中模块解析的具体规则与流程,看似很繁杂,其实本质都是去找一个对应的文件,找的过程中如果提供了完整的信息就直接用,不完整就用一些辅助信息来查找,都是殊途同归的

bqb

结语

我认为webpack的强大之处在于让我们能感受不到它的强大,因为很多事情背后都帮我们做完了,久而久之让我们觉得很多事情是理所当然的,当然这也是webpack的成功之处,牢牢地把控住了我们开发者,从而不会转战其他工具,因此webpack的学习之路还很漫长,需要一点耐心,需要一点毅力,需要一点热情~