webpack4之如何编写loader的方法步骤


Posted in Javascript onJune 06, 2019

之前学习过webpack3的知识,但是webpack4升级后还是有很多变动的,所以这次重新整理一下webpack4的知识点,方便以后复习。

这次学习webpack4不仅仅要会配置,记住核心API,最好还要理解一下webpack更深层次的知识,比如打包原理等等,所以可能会省略一些比较基础的内容,但是希望我可以通过此次学习掌握webpack,更好地应对以后的工作。

1.编写入门级loader

我在之前的文章中,已经把webpack基础的内容基本上都过了一遍,现在开始准备复习更高级的webpack知识了,首先从loader开始。

首先初始化一个项目

npm init

然后安装依赖

cnpm install -D webpack webpack-cli

创建一个src目录,里面创建一个index.js

webpack4之如何编写loader的方法步骤

新建一个webpack.config.js,写入最基本的配置

webpack4之如何编写loader的方法步骤

如果此时,我们有个需求,中打包过程中,需要把world替换成mark,我们就可以借助loader来实现。首先在src同级目录新建一个loader文件夹,里面新建一个replaceLoader.js。

webpack4之如何编写loader的方法步骤

replaceLoader.js需要导出一个函数,注意:这个函数不能是箭头函数,因为webpack调用loader的时候会对this做一些变更,上面有一些方法,如果使用箭头函数,this指向就会有问题,没有办法调用this上的一些方法。

函数可以接受一个参数,参数是我们源代码的内容,所以可以对source进行操作后,return source,就可以改变源代码了。

webpack4之如何编写loader的方法步骤

然后使用我们自己写的loader,use就不填写loader名称了,需要写我们编写的loader的路径。

webpack4之如何编写loader的方法步骤

这样我们打包后发现,world已经被替换成mark了,这样我们就实现了一个最简单的loader。

2.给loader配置参数

loader中常常可以配置一些参数,那么我们如果想配置参数,要怎么做呢?

webpack4之如何编写loader的方法步骤

此时在replaceLoader中,可以通过this.query访问到参数。

webpack4之如何编写loader的方法步骤

webpack4之如何编写loader的方法步骤

webpack4之如何编写loader的方法步骤

这样打包后,结果就会替换成我们的参数,但是官方推荐我们使用loader-utils来传参。

cnpm install --save-dev loader-utils

webpack4之如何编写loader的方法步骤

这样打包的结果也是我们传入的参数。

3.this.callback

有时候我们不止要return一个resource,还可能要返回多个结果,就需要用到callback。

this.callback(
 err: Error | null,
 content: string | Buffer,
 sourceMap?: SourceMap,
 meta?: any
);

第一个参数是错误,第二个是结果,第三个是sourcemap,第四个可以是任何内容(比如元数据)

webpack4之如何编写loader的方法步骤

4. this.async

在loader中,如果我们直接调用setTimeout,就会报错,那么如果我们想进行异步操作要怎么做呢?

webpack4之如何编写loader的方法步骤

当要使用异步的时候,需要先把callback变为this.callback,然后再返回结果(和this.callback一样)。

这样再打包就不会有任何问题。

额外知识点:我们现在配置loader的时候,需要使用path.resolve,有没有什么方法可以像其他loader一样引用呢?

webpack4之如何编写loader的方法步骤

这样只写loader名称,webpack就会先到node_modules里面找,找不到就去当前目录下的loaders中去找。

webpack4之如何编写loader的方法步骤

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript的匿名函数小结
Dec 31 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
Dec 25 Javascript
javascript中HTMLDOM操作详解
Dec 11 Javascript
jQuery插件dataTables添加序号列的方法
Jul 06 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
Vue.js移动端左滑删除组件的实现代码
Sep 08 Javascript
使用layui 渲染table数据表格的实例代码
Aug 19 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
Nov 20 Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 Javascript
vue全屏事件开发详解
Jun 17 Javascript
基于ajax及jQuery实现局部刷新过程解析
Sep 12 jQuery
JavaScript的function函数详细介绍
Nov 20 Javascript
vue 插件的方法代码详解
Jun 06 #Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 #jQuery
node.js的http.createServer过程深入解析
Jun 06 #Javascript
vue中keep-alive组件的入门使用教程
Jun 06 #Javascript
vue2配置scss的方法步骤
Jun 06 #Javascript
JavaScript中将值转换为字符串的五种方法总结
Jun 06 #Javascript
详解Vue 如何监听Array的变化
Jun 06 #Javascript
You might like
COM in PHP (winows only)
2006/10/09 PHP
IIS6的PHP最佳配置方法
2007/03/19 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
javaScript(JS)替换节点实现思路介绍
2013/04/17 Javascript
前端必备神器 Snap.svg 弹动效果
2014/11/10 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
深入解析Python中的变量和赋值运算符
2015/10/12 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
Django model反向关联名称的方法
2018/12/15 Python
Python3最长回文子串算法示例
2019/03/04 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
python将音频进行变速的操作方法
2020/04/08 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
高等教育学专业自荐书
2014/06/17 职场文书
小学生校园广播稿
2014/09/28 职场文书
湖南省召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书