先了解一下webpack,webpack是一个用于针对js文件的构建工具,在被构建的js文件中,咱们可使用require语句和webpack loader,以下:javascript
var css = require("css!./file.css"); // => returns css code from file.css, resolves imports and url(...)
css代码中的 @import与url()相似js的require()请求资源文件,css-loader 将会对 file.css文件中的 @import 和 url(...) 请求的资源进行解析处理,并转交
给适合处理请求资源文件的file-loader 或 url-loader。详情请看官网:https://www.npmjs.com/package/css-loadercss
基于上面示例,我对loader的定义是 转译器 html
一、loaders 支持链式,它们被应用在资源的的管道中,最后一个loader预期返回javascript;每一个laoder会返回任意格式的资源,并交给下一个loader进行处理.
二、loaders 支持同步和异步
三、loaders 运行在node.js环境中,能够作任何可能的事情(使用node.js api)
四、loaders 接受查询参数,能够经过配置loader来使用
五、loaders 能够在配置中经过正则匹配的文件扩展名来绑定
六、loaders 能够经过npm发布,安装
七、除了在package.json文件配置 main入口(指定js文件)以外,通常的js模块均可以做为导出的loader
八、loaders 能够访问配置
九、plugins 能够给予 loaders 更多的特征
十、loaders 能够处理额外的任意文件java
...node
若是你对一些loader示例感兴趣,请查看loaders列表:http://webpack.github.io/docs/list-of-loaders.htmlwebpack
loaders解析相似于模块解析,一个loader模块 就是一个执行于node.js环境中的函数;通常状况下,你应该经过使用npm来git
管理你的loaders,可是在你的项目中,也可使用单个js模块来做为你的loader github
一、引用loadersweb
loaders常常被命名为XXX-loader,XXX 代指文件mime类型的名称,如:json-loadernpm
咱们能够经过全名(如:json-loader),也能够经过简写名(如:json)来引用loaders
二、loaders 安装
若是loader存在于npm中,你能够像下面代码来安装loader:
npm install xxx-loader --save
or
npm install xxx-loader --save-dev
三、用法
使用require语句指定loaders
咱们使用 感叹号! 来将资源文件与loaders分开,使用多个loaders,应在全部的转换规则(loader)以前加上感叹号!,如:
require(!style!css!less!./src/css/index.less);
注:使用多个loaders是由右向左处理的,文件依次按less-loader,css-loader,style-loader处理
经过在webpack.config.js文件中配置指定loaders
{ module: { loaders: [ { test: /\.jade$/, loader: "jade" }, // => "jade" loader is used for ".jade" files { test: /\.css$/, loader: "style!css" }, // => "style" and "css" loader is used for ".css" files // Alternative syntax: { test: /\.css$/, loaders: ["style", "css"] }, ] } }
经过在命令行中配置使用
经过命令行你能够将loaders绑定到扩展的文件进行转换,如:
webpack --module-bind jade --module-bind 'css=style!css'
这里使用jade-loader绑定到 扩展的jade文件进行转换,使用style-loader,css-loader绑定到css文件进行转换
四、查询字符串
Loader能够经过查询字符串(相似web页面url中的查询字符串)传递查询参数,使用问号?将 loader与查询字符串链接,loader后跟查询字符串,如:
url-loader?mimetype=image/png
or
url-loader?{"mimetype"="image/png"}
require写法
require("url-loader?mimetype=image/png!./file.png");
webpack.config.js配置
{ test: /\.png$/, loader: "url-loader?mimetype=image/png" }
or
{ test: /\.png$/, loader: "url-loader", query: { mimetype: "image/png" } }
命令行绑定
webpack --module-bind "png=url-loader?mimetype=image/png"
ps:转载请注明 博客园:杨君华,文章有不足之处,望指正,多包涵。