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 相关文章推荐
MultiSelect左右选择控件的设计与实现介绍
Jun 08 Javascript
浅析return false的正确使用
Nov 04 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
Dec 31 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
Feb 23 Javascript
JS函数定义方式的区别介绍
Mar 22 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
Aug 15 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 jQuery
Javascript中 toFixed四舍六入方法
Aug 21 Javascript
node文字生成图片的示例代码
Oct 26 Javascript
Vue项目中Api的组织和返回数据处理的操作
Nov 04 Javascript
vue使用element-ui实现表单验证
Dec 13 Vue.js
vue+elementui 实现新增和修改共用一个弹框的完整代码
Jun 08 Vue.js
解决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中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
理解Javascript文件动态加载
2016/01/29 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
python列表使用实现名字管理系统
2019/01/30 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
C面试题
2015/10/08 面试题
sort命令的作用和用法
2013/08/25 面试题
创业计划书如何编写
2014/02/06 职场文书
保险经纪人求职信
2014/03/11 职场文书
企业节能减排实施方案
2014/03/19 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python