Webpack的Loader和Plugin的区别


Posted in Javascript onNovember 09, 2020

Loader

用于对模块源码的转换,loader描述了webpack如何处理非javascript模块,并且在buld中引入这些依赖。loader可以将文件从不同的语言(如TypeScript)转换为JavaScript,或者将内联图像转换为data URL。比如说:CSS-Loader,Style-Loader等。

loader的使用很简单:

在webpack.config.js中指定loader。module.rules可以指定多个loader,对项目中的各个loader有个全局概览。

loader是运行在NodeJS中,可以用options对象进行配置。plugin可以为loader带来更多特性。loader可以进行压缩,打包,语言翻译等等。

loader从模板路径解析,npm install node_modules。也可以自定义loader,命名XXX-loader。

语言类的处理器loader:CoffeeScript,TypeScript,ESNext(Bable),Sass,Less,Stylus。任何开发技术栈都可以使用webpack。

Plugin

目的在于解决loader无法实现的其他事,从打包优化和压缩,到重新定义环境变量,功能强大到可以用来处理各种各样的任务。webpack提供了很多开箱即用的插件:CommonChunkPlugin主要用于提取第三方库和公共模块,避免首屏加载的bundle文件,或者按需加载的bundle文件体积过大,导致加载时间过长,是一把优化的利器。而在多页面应用中,更是能够为每个页面间的应用程序共享代码创建bundle。

webpack功能强大,难点在于它的配置文件,webpack4默认不需要配置文件,可以通过mode选项为webpack指定了一些默认的配置,mode分为:development/production,默认是production。

插件可以携带参数,所以在plugins属性传入new实例。

【Mode】可以在config文件里面配置,也可以在CLI参数中配置:webpack --mode=production(一般会选择在CLI,也就是npm scripts里面进行配置)。

在webpack4以下版本,webpack3.XX,通过plugins进行环境变量的配置。

【resolve】模块,resolver是个库,帮助webpack找到bundle需要引入的模块代码,打包时,webpack使用enhanced-resolve来解析路径。

resolve: {
 extensions: ['.js', '.vue', '.json'],
 alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'),
 }
 }

 【Manifest】管理所有模块之间的交互。runtime将能够查询模块标识符,检索出背后对应的模块。

问题1:webpack通过使用bundle计算content hash作为文件名称,文件修改,新的content hash执向新的文件,缓存无效,但是文件内容没有修改,计算的hash还是会改变,因为,runtime和manifest的注入在每次构建都会发生变化。要想解决这个文件可以了解更多的runtime和manifest。

webpack原理:从配置文件定义的模块列表开始,处理应用程序,从入口文件开始递归构建一个依赖图,然后将所有模块打包为少量的bundle,通常只有一个,可由浏览器加载。

到此这篇关于Webpack的Loader和Plugin的区别的文章就介绍到这了,更多相关Webpack Loader和Plugin内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js 返回时间戳所对应的具体时间
Jul 20 Javascript
js中replace的用法总结
Dec 27 Javascript
jquery 插件实现瀑布流图片展示实例
Apr 03 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
javascript宿主对象之window.navigator详解
Sep 07 Javascript
在bootstrap中实现轮播图实例代码
Jun 11 Javascript
详解vue-cli 接口代理配置
Dec 13 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
Jul 24 Javascript
bootstrap-table formatter 使用vue组件的方法
May 09 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
Jun 25 Javascript
node.js中事件触发器events的使用方法实例分析
Nov 23 Javascript
在vue中使用console.log无效的解决
Aug 09 Javascript
解决vue初始化项目一直停在downloading template的问题
Nov 09 #Javascript
在VUE中使用lodash的debounce和throttle操作
Nov 09 #Javascript
解决vue init webpack 下载依赖卡住不动的问题
Nov 09 #Javascript
详解nginx配置vue h5 history去除#号
Nov 09 #Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
Nov 09 #Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
Nov 09 #Javascript
详解Vue中的watch和computed
Nov 09 #Javascript
You might like
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
php中explode函数用法分析
2014/11/15 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
JS功能代码集锦
2016/05/04 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
Python语言的12个基础知识点小结
2014/07/10 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
应届大专毕业生个人自荐信
2013/09/22 职场文书
班级入场式解说词
2014/02/01 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
网络技术专业求职信
2014/05/02 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
学校评语大全
2014/05/06 职场文书
2014年科协工作总结
2014/12/09 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
学校标语口号大全
2015/12/26 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
python之基数排序的实现
2021/07/26 Python
python_tkinter弹出对话框创建
2022/03/20 Python
详解pytorch创建tensor函数
2022/03/22 Python