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使用手册之二 DOM操作
Mar 24 Javascript
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
Mar 04 Javascript
删除Javascript Object中间的key
Nov 18 Javascript
jQuery中prevAll()方法用法实例
Jan 08 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
JavaScript的React框架中的JSX语法学习入门教程
Mar 05 Javascript
AngularJS控制器之间的数据共享及通信详解
Aug 01 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
Sep 16 Javascript
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 jQuery
vue如何截取字符串
May 06 Javascript
ES6 十大特性简介
Dec 09 Javascript
Vue页面渲染中key的应用实例教程
Jan 12 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 调试利器debug_print_backtrace()
2012/07/23 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
jquery对table中各数据的增加、保存、删除操作示例
2014/05/14 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
如何运行Python程序的方法
2013/04/21 Python
Python内置数据类型详解
2014/08/18 Python
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
pandas通过索引进行排序的示例
2018/11/16 Python
python监控nginx端口和进程状态
2019/09/06 Python
opencv python如何实现图像二值化
2020/02/03 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
远东集团网络工程师面试题
2014/10/20 面试题
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
介绍一些UNIX常用简单命令
2014/11/11 面试题
初婚初育证明
2014/01/14 职场文书
主管会计岗位责任制
2014/02/10 职场文书
环境科学专业求职信
2014/08/04 职场文书
党员作风建设自查报告
2014/10/23 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
英语感谢信范文
2015/01/20 职场文书
公司员工培训管理制度
2015/08/04 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书