那些有关于Loader的知识
前言
使用过webpack
的童鞋都应该知道loader
这个概念,那么,不知道你有没有兴趣和我一起来了解他呢?
Emmm,那是什么?
对,你没看错,他来了,他来了,他正朝向我们走来,然后当面就给我们来了一个
灵魂连环问, Loader
是什么?有什么用?有什么特点?有哪些Loader
? 怎么用?怎么写一个自己的Loader
?
Loader 是什么?
Loader
又称加载器, 它是类似其他构建工具中的 任务(task), 提供了处理前端构建步骤的强大方法。
Loader 有什么用?
loader
让 webpack
能够去处理那些非 JavaScript
文件(webpack
自身只理解 JavaScript
)。loader
可以将所有类型的文件转换为 webpack
能够处理的有效模块,然后你就可以利用 webpack
的打包能力,对它们进行处理。
本质上, webpack loader
将所有类型的文件,转换为应用程序的 依赖图 (dependency graph) (和最终的 bundle
)可以直接引用的模块。
Loader 特性
loader
支持链式传递,能够对资源使用流水线(pipeline)
。- 一组链式的
loader
将按照相反的顺序执行。loader
链中的第一个loader
返回值给下一个loader
。在最后一个loader
,返回webpack
所预期的JavaScript
。 - 当链式调用多个
loader
的时候,请记住它们会以相反的顺序执行。取决于数组写法格式,从右向左或者从下向上执行。
- 一组链式的
loader
可以是同步的,也可以是异步的。loader
运行在Node.js
中,并且能够执行任何可能的操作。loader
接收查询参数。用于对loader
传递配置。loader
也能够使用options
对象进行配置。- 除了使用
package.json
常见的main
属性,还可以将普通的 npm 模块导出为loader
,做法是在package.json
里定义一个loader
字段。 - 插件(plugin)可以为
loader
带来更多特性。 loader
能够产生额外的任意文件。