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 相关文章推荐
js实现DIV的一些简单控制
Jun 04 Javascript
javascript笔试题目附答案@20081025_jb51.net
Oct 26 Javascript
javascript列表框操作函数集合汇总
Nov 28 Javascript
javascript 实现map集合
Apr 03 Javascript
JS延时提示框实现方法详解
Nov 26 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
Feb 23 Javascript
js封装成插件_Canvas统计图插件编写实例
Sep 12 Javascript
webpack 4.0.0-beta.0版本新特性介绍
Feb 10 Javascript
解决vue项目报错webpackJsonp is not defined问题
Mar 14 Javascript
vue父子组件通信的高级用法示例
Aug 29 Javascript
使用vue制作滑动标签
Sep 21 Javascript
vue实现列表滚动的过渡动画
Jun 29 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
php递归调用删除数组空值元素的方法
2015/04/28 PHP
教大家制作简单的php日历
2015/11/17 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
Python实现的最近最少使用算法
2015/07/10 Python
Python+Wordpress制作小说站
2017/04/14 Python
django框架如何集成celery进行开发
2017/05/24 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
Python实现查询某个目录下修改时间最新的文件示例
2018/08/29 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
python读取xml文件方法解析
2020/08/04 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
电大学习个人自我评价范文
2013/10/04 职场文书
集体备课反思
2014/02/12 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书