lhlGitHub / trisome

前端大厂进攻学习资料库
21 stars 1 forks source link

Webpack loader 与 plugin 的区别 #33

Open lhlGitHub opened 2 years ago

Moannas commented 2 years ago

loader即为文件加载器,操作的是文件,将文件A通过loader转换成文件B,是一个单纯的文件转化过程。

plugin即为插件,是一个扩展器,丰富webpack本身,增强功能 ,针对的是在loader结束之后,webpack打包的整个过程,他并不直接操作文件,而是基于事件机制工作,监听webpack打包过程中的某些节点,执行广泛的任务。

loringray commented 2 years ago

简单讲: loader 负责文件转换、plugin 负责功能扩展

loader:在 webpack 内部默认只能够处理 js 模块代码,在打包过程中,会默认把所有遇到的文件都当作 JavaScript 代码进行解析,因此当项目存在非 js 类型文件时,需要先对其进行转换,才能继续执行打包任务。

plugin:负责拓展更多的功能,webpack 基于发布订阅模式,在运行生命周期中会广播出许多事件,插件通过监听这些事件,就可以在特定的阶段执行自己的插件任务,从而实现自己想要的功能。 webpack 的事件机制基于 webpack 自己实现的一套 Tapable 事件流方案。