一、简介
webpack本身只能处理js模块,Loader可以理解为模块和资源的转换器,它本身是一个函数,接受文件作为参数,返回转换的结果。因此,我们就能通过require来加载任何类型的模块和文件。
特点:
(1)Loader可以通过管道方式链式调用,每个loader可以自愿转换为任意格式传递给下一个loader,但最后一个loader必须返回js;
(2)同步或异步执行;
(3)运行与node.js环境中
(4)可以通过npm进行安装
(5)可以接受参数,以此来传递配置项给loader;
(6)loader可以通过文件扩展名(或正则表达式)绑定给不通类型的文件
命名规则:按照惯例,而非必须,loader 一般以 xxx-loader 的方式命名,xxx 代表了这个 loader 要做的转换功能,比如 json-loader
二、安装及使用方法
 
::安装
npm install css-loader style-loader   
 
在引用 loader 的时候可以使用全名 json-loader,或者使用短名 json
使用方法:
(1)在require()引用模块时添加
     例如: 在页面中引入一个 CSS 文件 style.css,首页将 style.css 也看成是一个模块,然后用 css-loader 来读取它,再用 style-loader 把它插入到页面中。
     
//载入style.css
require('!style-loader!css-loader!./style.css');
 
(2)在webpack全局配置中绑定
     详见常用loader介绍。
 
(3)通过命令行的方式使用
     在引入时直接使用:
 
require('./style.css');
 
在打包执行时:
 
webpack entry.js build.js --module-bind 'css=style-loader!css-loader'
::有些环境下可能需要使用双引号
webpack entry.js bundle.js --module-bind "css=style-loader!css-loader"
 
三、常用loader
 
css-loader 处理css中路径引用等问题
style-loader 动态把样式写入css
sass-loader scss编译器
less-loader less编译器
postcss-loader scss再处理
 
1、js处理
 
{
    test: /\.js?$/,
    exclude: /node_modules/,
    loader: 'babel',
    query: {
        presets: ['es2015', 'stage-2', 'react']
    }
}
 
(1)babel-loader  转码器
Babel是一个转码器,可以将ES6语法转换为ES5语法,这样就可以用ES6编写程序,而不用担心现有环境是否支持。
例如:
 
//转码前
arr.map(item => item + 1);  //箭头函数
//转码后
arr.map(function(item){
     return item + 1;
});
第一步:Babel的配置文件 .babelrc,存放到项目的更目录下。
所有Babel工具和模块的使用,都必须先写好.babelrc
 
{
     'presets':[
          'es2015',
          'react',
          'stage-2'
     ],
     'plugins':[]
}
 
①presets字段设定转码规则,官方提过一下的规则集,可根据需要安装。
 
::ES2015转码规则
npm install --save-dev babel-preset-es2015
::react转码规则
npm install --save-dev babel-preset-react
::ES7不同阶段语法提案的转码规则(共有四个阶段),选装一个
npm install --save-dev babel-preset-stage-0
npm install --save-dev babel-preset-stage-1
npm install --save-dev babel-preset-stage-2
npm install --save-dev babel-preset-stage-3
 
②plugins字段是babel插件。
例如:Ant Design 中需要按需加载antd脚本和样式
 
npm install --save-dev antd babel-plugin-import
 
{
     "plugins": [
          ["import", { libraryName: "antd", style: true }]
     ]
}
 
第二步:babel-core
有的代码需要调用Babel的API进行转码,就要使用babel-core模块。
 
npm install babel-core --save-dev
 
更多Babel资料,请查阅大神日志:http://www.ruanyifeng.com/blog/2016/01/babel.html
(2)jsx-loader  jsx编译器
 
npm install --save-dev jsx-loader
 
2、css/sass/less 处理
 
npm install --save-dev css-loader style-loader sass-loader less-loader
 
{
    test: /\.css$/,
    loader: "style-loader!css-loader"
},
{
    test: /\.scss$/,
    loader: "style-loader!css-loader!sass-loader"
},
{
    test: /\.less$/,
    loader: "style-loader!css-loader!less-loader"
},
 
3、文件处理
 
npm install --save-dev url-loader file-loader
 
{
    test: /\.(jpg|png)$/,
    loader: "url-loader?limit=8192"
},
{
    test: /\.svg$/,
    loader: 'url-loader?limit=100000'
},
 
{
      test: /\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/,
      loader: 'file-loader'
},
 
4、json处理
 
npm install --save-dev json-loader
 
{
     test:/\.json$/,
     loader:'json-loader'
}
 
四、loader一览表
扩展名 语义 loader举例
.js returns module exports babel-loader
.ts returns module exports ts-loader
.coffee returns module exports coffee-loader coffee-redux-loader
.jsx returns module exports (react component) jsx-loader react-hot-loader!jsx-loader
.json .json5 returns json value json-loader json5-loader
.txt return string value raw-loader
.css returns nothing, side effect of adding style to DOM style-loader!css-loader style-loader!css-loader!autoprefixer-loader
.less returns nothing, side effect of adding style to DOM style-loader!css-loader!less-loader
.scss returns nothing, side effect of adding style to DOM style-loader!css-loader!scss-loader
.style returns nothing, side effect of adding style to DOM style-loader!css-loader!stylus-loader
.png .jpg .jpeg .gif .svg returns url to image file-loader url-loader
.woff .ttf returns url to font file-loader url-loader
.wav .mp3 returns url to audio file-loader url-loader
.mpeg .mp4 .webm .ogv returns url to video file-loader
.html returns HTML as string html-loader
.md .markdown returns HTML as string html-loader!markdown-loader
.jade returns template function jade-loader
.hbs .handlebars returns template function handlebars-loader

Loader转换器的更多相关文章

  1. webpack前端构建工具学习总结(二)之loader的使用

    Webpack 本身只能处理 JavaScript 模块,如果要处理其他类型的文件,就需要使用 loader 进行转换. Loader 可以理解为是模块和资源的转换器,它本身是一个函数,接受源文件作为 ...

  2. webpack学习总结

    前言 在还未接触webpack,就有几个疑问: 1. webpack本质上是什么? 2. 跟异步模块加载有关系吗? 3. 可否生成多个文件,一定是一个? 4. 被引用的文件有其他异步加载模块怎么办? ...

  3. webpack-dev-server

    webpack-dev-server是一个小型的node.js Express服务器,它使用webpack-dev-middleware中间件来为通过webpack打包生成的资源文件提供Web服务.它 ...

  4. webpack脚手架搭建(简单版)

    运行命令 安装依赖:npm install 运行项目:npm start 大致流程 npm init:新建 package.json 将需要的依赖模块加入 dependencies(生产环境) 和 d ...

  5. webpack基础入门

    我相信,有不少的朋友对webpack都有或多或少的了解.网上也有了各种各样的文章,文章内作者也写出了不少自己对于webpack这个工具的理解.在我刚刚接触webpack的时候,老实说,网上大部分的文章 ...

  6. 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍

    webpack的一点介绍 Webpack 把任何一个文件都看成一个模块,模块间可以互相依赖(require or import),webpack 的功能是把相互依赖的文件打包在一起.webpack 本 ...

  7. 一天浓缩学习webpack经过

    熟话说浓缩就是精华,哈哈,所以就这么简单粗暴的介绍下吧,写下的都是精华. 已经不是第一次听说webpack,但是我的起步有点晚,现在才看.开门见山~~ 1.什么是webpack? webpack是当下 ...

  8. webpack 介绍 & 安装 & 常用命令

    webpack 介绍 & 安装 & 常用命令 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 webpa ...

  9. 手把手教你用webpack3搭建react项目(开发环境和生产环境)(一)

    开发环境和生产环境整个配置源码在github上,源码地址:github-webpack-react 如果觉得有帮助,点个Star谢谢!! (一)是开发环境,(二)是生产环境. 一.首先创建packag ...

随机推荐

  1. 编译GDAL支持ArcObjects

    编译GDAL支持ArcObjects. 首先修改nmake.opt文件中对应的ArcObjects,修改后的如下所示: #uncomment to use ArcObjects ARCOBJECTS_ ...

  2. Java并发框架——AQS阻塞队列管理(三)——CLH锁改造

    在CLH锁核心思想的影响下,Java并发包的基础框架AQS以CLH锁作为基础而设计,其中主要是考虑到CLH锁更容易实现取消与超时功能.比起原来的CLH锁已经做了很大的改造,主要从两方面进行了改造:节点 ...

  3. ASP.net 路径问题 详解

    各位有没有碰到在日常工作中经常在路径设置的时候把 "~/ ../ .../ . / .http://www.cnblogs.com/"这些符号搞混搞乱了?偶尔还会因路径的问题郁闷了 ...

  4. Dynamics CRM 2015Online Update1 new feature之 插件跟踪日志

     在最新的CRM2015Online Update1版本中加入了一个新功能-插件跟踪日志,与其说是新功能更应该说是对原有功能的加强,因为ITracingService这个接口在2013中已经引入了, ...

  5. Docker教程:dokcer的配置和命令

    http://blog.csdn.net/pipisorry/article/details/50803028 Docker命令查询 终端运行docker命令,它会打印所有可用的命令列表及使用描述:# ...

  6. 软件测试进阶(一)A/B测试终极指南

    A/B测试终极指南 A/B测试不是一个时髦名词.现在很多有经验的营销和设计工作者用它来获得访客行为信息,来提高转换率.然而,A/B测试与SEO不同的是,人们都不太知道如何进行网站分析和可用性分析.他们 ...

  7. iOS中 轮播图放哪最合适? 技术分享

    我们知道,轮播图放在cell或collectionViewCell上会影响用户层级交互事件,并且实现起来比较麻烦,现在推出一个技术点:答题思路是:将UIScrollView放在UIView或UICol ...

  8. Oracle开发环境搭建

    一.软件准备 地址:oracle官网 安装包:因为个人学习用,所以就安装服务器端就可以了,不需要客户端. 一共两个压缩文件,解压时一起解压到到一个文件夹. 本人使用的:win32_11gR2_data ...

  9. C#神器 委托 + Unity神器 协程

    作为源生的C#程序员,可能已经非常了解委托(delegate).行动(Action)以及C#的事件了,不过作为一个半道转C#的程序员而言,这些东西可能还是有些陌生的,虽然委托并非是C#独创,亦非是首创 ...

  10. 在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~

    在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~ 不需要额外购买GPS设备. 将手机GPS数据通过蓝牙传输给计算机使用,当然通过类似方 ...