创建自己的Loader

  1. 创建自己的Loader
  2. Loader是用于对模块的源代码进行转换(处理),css-loader、style-loader、babel-loader等。
  3. 如何自定义自己的Loader:
  4. Loader本质上是一个导出为函数的JavaScript模块;
  5. loader runner库会调用这个函数,然后将上一个loader产生的结果或者资源文件传入进去;
  6. 编写一个hy-loader01.js模块这个函数会接收三个参数:
  7. content:资源文件的内容;
  8. map:sourcemap相关的数据;
  9. meta:一些元数据;

在加载某个模块时,引入loader

  1. 注意:传入的路径和context是有关系的,在前面我们讲入口的相对路径时有讲过。

resolveLoader属性

  1. 但是,如果我们依然希望可以直接去加载自己的loader文件夹,有没有更加简洁的办法呢?
  2. 配置resolveLoader属性;

loader的执行顺序

  1. 创建多个Loader使用,它的执行顺序是什么呢?
  2. 从后向前、从右向左的

pitch-loader和enforce

  1. 事实上还有另一种Loader,称之为PitchLoader:

执行顺序和enforce

  1. 其实这也是为什么loader的执行顺序是相反的:
  2. run-loader先优先执行PitchLoader,在执行PitchLoader时进行loaderIndex++;
  3. run-loader之后会执行NormalLoader,在执行NormalLoader时进行loaderIndex–;
  4. 那么,能不能改变它们的执行顺序呢?
  5. 我们可以拆分成多个Rule对象,通过enforce来改变它们的顺序;
  6. enforce一共有四种方式:
  7. 默认所有的loader都是normal;
  8. 在行内设置的loader是inline(在前面将css加载时讲过,import ‘loader1!loader2!./test.js’);
  9. 也可以通过enforce设置 pre 和 post;
  10. 在Pitching和Normal它们的执行顺序分别是:
  11. post, inline, normal, pre;
  12. pre, normal, inline, post;

同步的Loader

  1. 什么是同步的Loader呢?
  2. 默认创建的Loader就是同步的Loader;
  3. 这个Loader必须通过 return 或者 this.callback 来返回结果,交给下一个loader来处理;
  4. 通常在有错误的情况下,我们会使用 this.callback;
  5. this.callback的用法如下:
  6. 第一个参数必须是 Error 或者 null;
  7. 第二个参数是一个 string或者Buffer;

异步的Loader

  1. 什么是异步的Loader呢?
  2. 有时候我们使用Loader时会进行一些异步的操作;
  3. 我们希望在异步操作完成后,再返回这个loader处理的结果;
  4. 这个时候我们就要使用异步的Loader了;
  5. loader-runner已经在执行loader时给我们提供了方法,让loader变成一个异步的loader:

传入和获取参数

  1. 在使用loader时,传入参数
  2. 我们可以通过一个webpack官方提供的一个解析库 loader-utils,安装对应的库。

校验参数

  1. 我们可以通过一个webpack官方提供的校验库 schema-utils,安装对应的库

babel-loader案例

  1. 我们知道babel-loader可以帮助我们对JavaScript的代码进行转换,这里我们定义一个自己的babel-loader:

hymd-loader

webpack自定义loader相关推荐

  1. webpack自定义loader并发布到npm

    一.官网对loader的解释: 1.loader 是导出为一个函数的 node 模块.该函数在 loader 转换资源的时候调用.给定的函数将调用 loader API,并通过 this 上下文访问. ...

  2. Webpack自定义Loader和Plugin方法

    手写Loader Loader 本质上是导出函数的 JavaScript 模块,而该模块导出的函数被称为 Normal Loader,在开发 Loader时,我们可以在导出的函数上添加一个 pitch ...

  3. vue-cli Webpack之Loader原理及自定义Loader

    文章目录 1. Loader 分类与执行顺序 1.1 Loader 分类 1.2 Loader 执行顺序 1.3 使用Loader方式 1.3.1 内联 Loader 2. 开发 Loader 步骤 ...

  4. webpack:自定义loader

    以下是一个自定义loader replace-loader,实现一个类似模板引擎变量替换的简单功能 文件目录 . ├── dist │ └── index.js # 打包结果 ├── loaders ...

  5. Webpack之Loader原理及自定义Loader

    文章目录 1. Loader 分类与执行顺序 1.1 Loader 分类 1.2 Loader 执行顺序 1.3 使用Loader方式 1.3.1 内联 Loader 2. 开发 Loader 步骤 ...

  6. webpack loader解析及自定义loader

    自定义实现webpack loader加载模块,解析指定的类型文件 loader loader是一个导出为函数的node模块,可通过this访问上下文. 特点: loader单一职责,只负责解决单一的 ...

  7. webpack的loader与plugin原理

    文章目录 loader原理 loader执行顺序 loader使用方式 loader的实现 参数 同步loader 异步loader Raw loader Pitching loader loader ...

  8. webpack之 loader

    开篇 loader不难,loader不难,loader不难.默念三遍,然后开始. loader 简介 loader 这个东西配置 webpack 的时候经常用到,刚开始会让人觉得有一种神秘感. 看了文 ...

  9. Unity puerts 自定义Loader和调试和ab包的注意点

    输出ab包 他会把你创建的ab包都打包 也就是在这里的创建的都打包 string assetBundleDirectory = Path.Combine(Application.streamingAs ...

最新文章

  1. 探索机器学习的公平性(Delayed Impact of Fair Machine Learning)论文 pdf
  2. 软件工程网络15结对编程作业
  3. 第7章——狄克特斯拉算法
  4. Kmeans聚类算法详解
  5. 构建城市大脑的未来标准,9个值得探索的规范
  6. js之操作JSON数据
  7. r vector 4 elements_Vector类与Enumeration接口
  8. 带有Gluon Ignite和Dagger的JavaFX中的依赖注入
  9. The slave I/O thread stops(equal MySQL server ids)
  10. Linux ALSA声卡驱动之四:Control设备的创建
  11. HTML/CSS水平垂直居中方法(待补充)
  12. 负载均衡 > 用户指南 > 证书管理 > 证书要求
  13. bzoj 1003: [ZJOI2006]物流运输
  14. 自定义类加载器与热部署
  15. 电商项目数据库设计 | 第五篇:参考京东商城详细讲解商品数据库设计
  16. PyQt5 QLabel控件
  17. 没想到!2018微信年度数据报告显示使用最多的表情竟是...
  18. 利用count if()+条件格式突出显示多余的重复值
  19. 夜神模拟器连接手柄无反应_夜神安卓模拟器怎么连接手柄?夜神安卓模拟器连接手柄的方法...
  20. python泰坦尼克号生存预测论文_Kaggle 泰坦尼克号生存预测--8%(Python)

热门文章

  1. 微软的Framework导致该内存不能为written或read的错误?
  2. 人工智能定义及三次热潮
  3. 最简单的python语言实现汉诺塔游戏
  4. 猫眼 — 破解数字反爬获取实时票房
  5. Python学习-通过斗鱼api获取弹幕
  6. lstm中look_back的大小选择_基于时空关联度加权的LSTM短时交通速度预测
  7. python datetime计算时间差_python计算时间差的方法
  8. Office Online 在线预览
  9. proftpd mysql_ProFTPD的MySQL数据库
  10. MUI-设置沉浸式状态栏