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 相关文章推荐
js Html结构转字符串形式显示代码
Nov 15 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
Nov 17 Javascript
from表单多个按钮提交用onclick跳转不同action
Apr 24 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
May 05 Javascript
js 操作符汇总
Nov 08 Javascript
基于Jquery和html5的7款个性化地图插件
Nov 17 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
Aug 30 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
微信小程序当前时间时段选择器插件使用方法详解
Dec 28 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
Mar 21 Javascript
Vue组件之高德地图地址选择功能的实例代码
Jun 21 Javascript
Vue中插槽slot的使用方法与应用场景详析
Jun 08 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书写安全的脚本代码
2012/02/05 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
js倒计时抢购实例
2015/12/20 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
python爬虫实战之最简单的网页爬虫教程
2017/08/13 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
翻译学院毕业生自荐书
2014/02/02 职场文书
关爱留守儿童倡议书
2014/04/15 职场文书
网络技术专业求职信
2014/07/13 职场文书
单位工作证明书格式
2014/10/04 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
建国大业观后感600字
2015/06/01 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
2015年除四害工作总结
2015/07/23 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
部门主管竞聘书
2015/09/15 职场文书
初中政治教学反思
2016/02/23 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis