博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义加载器Loader
阅读量:7070 次
发布时间:2019-06-28

本文共 1549 字,大约阅读时间需要 5 分钟。

## 自定义加载器Loader

加载器Loader实质上是一个exports导出function的JS模块,它接收的入参为JS文件源码或者是上一个Loader导出的源码。

同步Loader

同步Loader的编写比较简单,只需要接收source参数,对source参数进行处理之后直接返回即可。如果是单参数Loader直接return即可,如果是多参数的Loader需要调用this.callback方法,将参数传递进去即可。

module.exports = function(source){	return `${source}`}或者module.exports = function(source){	return syncFn(source)}复制代码

如果要传入多个参数,可以调用this.callback

module.exports = function(content, map, meta) {  this.callback(null, someSyncOperation(content), sourceMaps, meta);  return; // 当调用完callback后需要手动调用return};复制代码

异步Loader

异步Loader在需要执行异步操作时,需要调用this.async方法,传入源码。需要注意的是,this.async只是简单地封装了this.callback,两者的入参都是一样的。另外,最好在最开始就保存this.async指针,避免污染。

module.exports = function(content, map, meta) {  var callback = this.async();  someAsyncOperation(content, function(err, result) {    if (err) return callback(err);    callback(null, result, map, meta);  });};复制代码

或者

module.exports = function(content, map, meta) {  var callback = this.async();  someAsyncOperation(content, function(err, result, sourceMaps, meta) {    if (err) return callback(err);    callback(null, result, sourceMaps, meta);  });};复制代码

this

在Loader里的this参数,封装了webpack和loader runner的一些方法,允许将Loader执行异步方法,或者读取查询参数。

  • this.callback

    可以接收多个参数,执行同步或者异步操作(异步操作需要调用this.async),它有四个默认参数:

    1. 如果进行错误处理时,传入错误标识Error,不然传入null即可。

    2. 可以是文件源码或者是上一个Loader输出的源码。支持string或者Buffer(需要设置Raw属性)。

    3. 可选项:如果需要sourceMap就传入SourceMap参数,不然为空。

    4. 可选项:可以传入任意值。

      this.callback{ 	err:Error | null, 	content: string | Buffer, 	sourceMap?: SourceMap,   	meta?: any }复制代码
  • this.async

    this.async简单地封装了this.callback,入参都一样,只是用来表示异步操作

转载地址:http://iehll.baihongyu.com/

你可能感兴趣的文章
C - The C Answer (2nd Edition) - Exercise 1-2
查看>>
POJ 1579 Function Run Fun 记忆化递归
查看>>
天凉好个秋(连载九)
查看>>
spring的关于数据源的datasource接口的深入理解
查看>>
GO语言使用开源SSH模拟终端
查看>>
go-007-条件语句
查看>>
atol的实现【转】
查看>>
Ubuntu打开终端的方法三种
查看>>
【Git使用具体解释】Egit的经常使用操作具体解释
查看>>
zabbix 通过自定义key完成网卡监控
查看>>
WifiManager类具体解释
查看>>
cocos2dx3.2 android平台搭建开发环境纠错备忘录
查看>>
CDN(内容分发网络)技术原理
查看>>
Flask + mod_wsgi + Apache on Windows 部署成功(随时接受提问)
查看>>
提高代码编码的效率,习惯非常重要!
查看>>
maven最全教程
查看>>
对Inductive Bias(归纳偏置)的理解
查看>>
chest
查看>>
hdu 1215 七夕节
查看>>
老调重弹:JDBC系列 之 <驱动载入原理全面解析>
查看>>