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 相关文章推荐
javascript学习网址备忘
May 29 Javascript
Javascript this指针
Jul 30 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
Oct 14 Javascript
HTML颜色选择器实现代码
Nov 23 Javascript
javascript匿名函数应用示例介绍
Mar 07 Javascript
基于JavaScript实现动态创建表格和增加表格行数
Dec 20 Javascript
深入理解JS中的Function.prototype.bind()方法
Oct 11 Javascript
微信小程序 wxapp画布 canvas详细介绍
Oct 31 Javascript
js实现拖拽上传图片功能
Aug 01 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
Mar 03 Javascript
基于VUE实现判断设备是PC还是移动端
Jul 03 Javascript
js实现前端界面导航栏下拉列表
Aug 27 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
如何在PHP程序中防止盗链
2008/04/09 PHP
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
在Django中限制已登录用户的访问的方法
2015/07/23 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
pandas 选择某几列的方法
2018/07/03 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
Python爬虫文件下载图文教程
2018/12/23 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
python如何支持并发方法详解
2020/07/25 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
司法局火灾防控方案
2014/06/05 职场文书
大学英语专业求职信
2014/06/21 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
OpenCV实现反阈值二值化
2021/11/17 Java/Android
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS