码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
webpack自定义loader
创建自己的Loader
创建自己的Loader
Loader是用于对模块的源代码进行转换(处理),css-loader、style-loader、babel-loader等。
如何自定义自己的Loader:
Loader本质上是一个导出为函数的JavaScript模块;
loader runner库会调用这个函数,然后将上一个loader产生的结果或者资源文件传入进去;
编写一个hy-loader01.js模块这个函数会接收三个参数:
content:资源文件的内容;
map:sourcemap相关的数据;
meta:一些元数据;
在加载某个模块时,引入loader
注意:传入的路径和context是有关系的,在前面我们讲入口的相对路径时有讲过。
resolveLoader属性
但是,如果我们依然希望可以直接去加载自己的loader文件夹,有没有更加简洁的办法呢?
配置resolveLoader属性;
loader的执行顺序
创建多个Loader使用,它的执行顺序是什么呢?
从后向前、从右向左的
pitch-loader和enforce
事实上还有另一种Loader,称之为PitchLoader:
执行顺序和enforce
其实这也是为什么loader的执行顺序是相反的:
run-loader先优先执行PitchLoader,在执行PitchLoader时进行loaderIndex++;
run-loader之后会执行NormalLoader,在执行NormalLoader时进行loaderIndex–;
那么,能不能改变它们的执行顺序呢?
我们可以拆分成多个Rule对象,通过enforce来改变它们的顺序;
enforce一共有四种方式:
默认所有的loader都是normal;
在行内设置的loader是inline(在前面将css加载时讲过,import ‘loader1!loader2!./test.js’);
也可以通过enforce设置 pre 和 post;
在Pitching和Normal它们的执行顺序分别是:
post, inline, normal, pre;
pre, normal, inline, post;
同步的Loader
什么是同步的Loader呢?
默认创建的Loader就是同步的Loader;
这个Loader必须通过 return 或者 this.callback 来返回结果,交给下一个loader来处理;
通常在有错误的情况下,我们会使用 this.callback;
this.callback的用法如下:
第一个参数必须是 Error 或者 null;
第二个参数是一个 string或者Buffer;
异步的Loader
什么是异步的Loader呢?
有时候我们使用Loader时会进行一些异步的操作;
我们希望在异步操作完成后,再返回这个loader处理的结果;
这个时候我们就要使用异步的Loader了;
loader-runner已经在执行loader时给我们提供了方法,让loader变成一个异步的loader:
传入和获取参数
在使用loader时,传入参数
我们可以通过一个webpack官方提供的一个解析库 loader-utils,安装对应的库。
校验参数
我们可以通过一个webpack官方提供的校验库 schema-utils,安装对应的库
babel-loader案例
我们知道babel-loader可以帮助我们对JavaScript的代码进行转换,这里我们定义一个自己的babel-loader:
hymd-loader
相关阅读:
Mongo的数据操作
12-Java 继承&&抽象类&&代码块(详解~)
2022 Cloud Native Computing代表厂商 | 灵雀云第三次入选Gartner中国ICT技术成熟度曲线报告
如何限制内网网速
【开卷数据结构 】2-3树
机器学习(二)线性回归
C/C++语言100题练习计划 83——背包问题(贪心算法实现)
NPDP产品经理知识(市场调研-文化,团队,领导力)
jsp简单实现新闻发布系统中用户注册确认和用户模拟登录功能的开发
二元线性回归(自写梯度下降法与scikit-learn)
原文地址:https://blog.csdn.net/formylovetm/article/details/126498734
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号