webpack 中 loader 和 plugin 的区别是什么

webpack 中 loader 和 plugin 的区别是什么

  1. loader,它是一个转换器,将A文件进行编译成B文件,比如:将A.less转换为A.css,单纯的文件转换过程。
  2. plugin是一个扩展器,它丰富了webpack本身,针对是loader结束后,webpack打包的整个过程,它并不直接操作文件,而是基于事件机制工作,会监听webpack打包过程中的某些节点,执行广泛的任务
loader:
  • webpack自身只支持js和json这两种格式的文件,对于其他文件需要通过loader将其转换为commonJS规范的文件后,webpack才能解析到
plugin:
  • 是用于在webpack打包编译过程里,在对应的事件节点里执行自定义操作,比如资源管理、bundle文件优化等操作

loader

   让webpack能够处理非js文件(自身职能理解js),然后你就可以利用 webpack 的打包能力,
对它们进行处理。
   例如:css-loader、style-loader、postcss-loader、sass-loader

plugins

从打包优化和压缩,一直到重新定义环境中的变量.
    例如:uglify-webpack-plugin、clean-webpack-plugin、babel-polyfill

通俗点讲loader是转换,plugin是执行比转换更复杂的任务,比如合并压缩等

webpack 是由nodejs编写的前端资源加载/打包工具,由nodejs提供了强大的文件处理,IO能力。
  1. loader: 是一个nodejs 函数模块, 传入resource file 或者sourceMap json 结果,读取文件,将文件处理为String 或者 Buffer 格式,然后传给compiler 或者下一个loader.
  2. plugin: 是能够参与到compilation process的自定义函数,通过hook到每一个编译(compiler)中,触发关键事件或处理。

如何自定义webpack插件:

  • JavaScript 命名函数
  • 在插件函数prototype 上定义一个apply 方法
  • 定义一个绑定到webpack 自身的hook
  • 处理webpack内部特定数据
  • 功能完成后调用webpack 提供的回调
总结:
一、webpack的打包原理
  1. 识别入口文件
  2. 通过逐层识别模块依赖(Commonjs、amd或者es6的import,webpack都会对其进行分析,来获取代码的依赖)
  3. webpack做的就是分析代码,转换代码,编译代码,输出代码
  4. 最终形成打包后的代码
二、什么是loader
  • loader是文件加载器,能够加载资源文件,并对这些文件进行一些处理,诸如编译、压缩等,最终一起打包到指定的文件中
    1. 处理一个文件可以使用多个loader,loader的执行顺序和配置中的顺序是相反的,即最后一个loader最先执行,第一个loader最后执行
    2. 第一个执行的loader接收源文件内容作为参数,其它loader接收前一个执行的loader的返回值作为参数,最后执行的loader会返回此模块的JavaScript源码
三、什么是plugin
  • 在webpack运行的生命周期中会广播出许多事件,plugin可以监听这些事件,在合适的时机通过webpack提供的API改变输出结果。
四、loader和plugin的区别
  • 对于loader,它是一个转换器,将A文件进行编译形成B文件,这里操作的是文件,比如将A.scss转换为A.css,单纯的文件转换过程
  • plugin是一个扩展器,它丰富了webpack本身,针对是loader结束后,webpack打包的整个过程,它并不直接操作文件,而是基于事件机制工作,会监听webpack打包过程中的某些节点,执行广泛的任务
  • 13
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值