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 相关文章推荐
学习YUI.Ext 第四天--对话框Dialog的使用
Mar 10 Javascript
在JavaScript中监听IME键盘输入事件
May 29 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
Jan 23 Javascript
jQuery根据纬度经度查看地图处理程序
May 08 Javascript
javascript中call和apply方法浅谈
Sep 27 Javascript
关于编写性能高效的javascript事件的技术
Nov 28 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
Sep 06 Javascript
javascript实现全角转半角的方法
Jan 23 Javascript
jquery拼接ajax 的json和字符串拼接的方法
Mar 11 Javascript
element-ui 中的table的列隐藏问题解决
Aug 24 Javascript
JavaScript的词法结构精华篇
Oct 17 Javascript
解决vue中provide inject的响应式监听
Apr 19 Vue.js
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
php实现scws中文分词搜索的方法
2015/12/25 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
javascript 鼠标拖动图标技术
2010/02/07 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
JavaScript中eval函数的问题
2016/01/31 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
微信小程序实现锚点功能
2019/11/20 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
python编程嵌套函数实例代码
2018/02/11 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
python2与python3共存问题的解决方法
2018/09/18 Python
Python制作exe文件简单流程
2019/01/24 Python
python里dict变成list实例方法
2019/06/26 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
Python 实现自动导入缺失的库
2019/10/29 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
如何高效率的查找一个月以内的数据
2012/04/15 面试题
电力公司个人求职信范文
2014/02/04 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript