webpack3之loader全解析


Posted in Javascript onOctober 26, 2017

首先亮出webpack官方网站,webpack能干什么?官网给出的答案就是,一句话,让一切变得简单!

各式各样的loader层出不穷,让我们在构建时不知所措,于此,总结下loader的全解析。

概念

loader,顾名思义,加载器,英文的解释如下:

Loaders are transformations that are applied on the source code of a module. They allow you to pre-process files as you import or “load” them. Thus, loaders are kind of like “tasks” in other build tools, and provide a powerful way to handle front-end build steps. Loaders can transform files from a different language (like TypeScript) to JavaScript, or inline images as data URLs. Loaders even allow you to do things like import CSS files directly from your JavaScript modules!

中文翻译过来就是:

loader 用于对模块的源代码进行转换。loader 可以使你在 import 或“加载”模块时预处理文件。因此,loader 类似于其他构建工具中“任务(task)”,并提供了处理前端构建步骤的强大方法。loader 可以将文件从不同的语言(如 TypeScript)转换为 JavaScript,或将内联图像转换为 data URL。loader 甚至允许你直接在 JavaScript 模块中 import CSS文件!

从中,可以看出loader的强大作用,分析下:

  1. 转换的作用。开发所用到的都转换成网页加载所必备的html+css+js+img等要求格式的文件。
  2. 转换对象是源代码。loader只对源代码转换,至于其他的功能,plugins就来接收它做不到的地方。

总结一句话:loader, 加载的机器,形象的比喻下,就像一个豆浆机,放上你的原料,它就开始认真的工作了!

常用的loader

1、babel-loader

This package allows transpiling JavaScript files using Babel and webpack.

加载 ES2015+ 代码,然后使用 Babel 转译为 ES5

安装:

npm install --save-dev babel-loader babel-core babel-preset-env webpack

使用:

{
 test: /\.js$/,
 exclude: /node_modules/,
 loader: 'babel-loader'
}

2、style-loader

Adds CSS to the DOM by injecting a <style> tag

将模块的导出作为样式添加到 DOM 中

安装:

npm install style-loader --save-dev

建议要与css-loader一起使用

使用:

{
 test: /\.css$/,
 use: [
 'style-loader',
 'css-loader'
]
}

3、css-loader

解析 CSS 文件后,使用 import 加载,并且返回 CSS 代码

安装:

npm install css-loader --save-dev

使用:

{
 test: /\.css$/,
 use: [ 'style-loader', 'css-loader' ]
}

4、less-loader

加载和转译 LESS 文件

安装:

npm install --save-dev less-loader less

使用:

{
 test: /\.less$/,
 exclude: /node_modules/,
 use: ExtractTextPlugin.extract(['css-loader', 'less-loader'])
}

5、url-loader

Loads files as base64 encoded URL

处理图片类文件,但如果文件小于限制,可以返回 data URL

安装:

npm install --save-dev url-loader

使用:

{
 test: /\.(jpg|jpeg|png|gif)$/,
 loader: 'url-loader',
 options: {
   limit: 8192
 }
}

6、file-loader

Instructs webpack to emit the required object as file and to return its public URL

处理font/svg等,将文件发送到输出文件夹,并返回(相对)URL

安装:

npm install file-loader --save-dev

使用:

{
 test: /\.(woff|woff2|svg|eot|ttf)$/,
 use: 'file-loader'
}

7、vue-loader

加载和转译 Vue 组件

安装:

npm install --save-dev vue-loader vue vue-template-compiler

使用:

{
 test: /\.vue$/,
 loader: 'vue-loader',
 options: {
   loaders: {
     less: ExtractTextPlugin.extract({
       use: ['css-loader', 'less-loader'],
       fallback: 'vue-style-loader'
     })
   }
 }
}

至此,有关loader中所用的参数请移步官网查询解决,谢谢查阅!以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
How to Auto Include a Javascript File
Feb 02 Javascript
从sohu弄下来的flash中展示图片的代码
Apr 27 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
Jul 14 Javascript
js获得鼠标的坐标值的方法
Mar 13 Javascript
js常用数组操作方法简明总结
Jun 20 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
Oct 12 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
Aug 15 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
Oct 24 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
Apr 12 Javascript
用react-redux实现react组件之间数据共享的方法
Jun 08 Javascript
layer.open 按钮的点击事件关闭方法
Aug 17 Javascript
基于javascript实现贪吃蛇小游戏
Nov 25 Javascript
JS使用正则表达式找出最长连续子串长度
Oct 26 #Javascript
AngularJS实现的输入框字数限制提醒功能示例
Oct 26 #Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
Oct 26 #Javascript
详谈构造函数加括号与不加括号的区别
Oct 26 #Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
Oct 26 #Javascript
纯JavaScript实现实时反馈系统时间
Oct 26 #Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
Oct 26 #Javascript
You might like
关于页面优化和伪静态
2009/10/11 PHP
php5.3 注意事项说明
2013/07/01 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
Bootstrap每天必学之导航组件
2016/04/25 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
Python实现快速多线程ping的方法
2015/07/15 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
Django 路由层URLconf的实现
2019/12/30 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
python Timer 类使用介绍
2020/12/28 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
商务日语毕业生自荐信
2013/11/23 职场文书
化工专业个人的求职信范文
2013/11/28 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
爱国之歌(8首)
2019/09/29 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
Flask搭建一个API服务器的步骤
2021/05/28 Python