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 相关文章推荐
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
Mar 25 Javascript
使用CSS样式position:fixed水平滚动的方法
Feb 19 Javascript
js文件Cookie存取值示例代码
Feb 20 Javascript
JS实现网页表格自动变大缩小的方法
Mar 09 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
Sep 09 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
Jan 21 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
Jun 06 Javascript
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
vue移动端监听滚动条高度的实现方法
Sep 03 Javascript
js实现弹出框的拖拽效果实例代码详解
Apr 16 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
Mar 20 jQuery
基于Echarts图表在div动态切换时不显示的解决方式
Jul 20 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
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
php实现的双向队列类实例
2014/09/24 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
2017/03/06 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
jQuery复合事件用法示例
2017/06/10 jQuery
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
Python3 replace()函数使用方法
2018/03/19 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
Python如何获取文件指定行的内容
2020/05/27 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
高分子材料与工程专业推荐信
2013/12/01 职场文书
会计学个人自荐信模板
2013/12/13 职场文书
三年大学自我鉴定
2014/01/16 职场文书