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 相关文章推荐
javascript中利用数组实现的循环队列代码
Jan 24 Javascript
一些实用的jQuery代码片段收集
Jul 12 Javascript
JS的replace方法详细介绍
Nov 09 Javascript
关于JavaScript对象的动态选择及遍历对象
Mar 10 Javascript
微信小程序的动画效果详解
Jan 18 Javascript
vue.js 初体验之Chrome 插件开发实录
May 13 Javascript
JavaScript实现的浏览器下载文件的方法
Aug 09 Javascript
解决vue keep-alive 数据更新的问题
Sep 21 Javascript
简单使用webpack打包文件的实现
Oct 29 Javascript
vue中使用rem布局代码详解
Oct 30 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
Jan 05 Javascript
JavaScript对象原型链原理详解
Feb 05 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 实现多服务器共享 SESSION 数据
2009/08/15 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
一个入门级python爬虫教程详解
2021/01/27 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
预备党员表决心书
2014/03/11 职场文书
对祖国的寄语大全
2014/04/11 职场文书
幼儿教师求职信
2014/05/24 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
工程部经理岗位职责
2015/02/02 职场文书
早恋主题班会
2015/08/14 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
2019年思想汇报
2019/06/20 职场文书
创业计划书之便利店
2019/09/05 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
Python实现生成bmp图像的方法
2021/06/13 Python