详解webpack之图片引入-增强的file-loader:url-loader


Posted in Javascript onOctober 08, 2018

前言:

本文介绍了url-loader(增强的file-loader);

url-loader作用:根据需求选择性的把某些小图片编码成base64格式写进页面;从而减少服务器请求。优化性能。

url-loader解决的问题:

如果图片较多,会发很多http请求,会降低页面性能。url-loader会将引入的图片编码,生成dataURl。相当于把图片数据翻译成一串字符。再把这串字符打包到文件中,最终只需要引入这个文件就能访问图片了。当然,如果图片较大,编码会消耗性能。因此url-loader提供了一个limit参数,小于limit字节的文件会被转为DataURl,大于limit的还会使用file-loader进行copy。

url-loader和file-loader是什么关系呢?

简答地说,url-loader封装了file-loader。url-loader不依赖于file-loader,即使用url-loader时,只需要安装url-loader即可,不需要安装file-loader,因为url-loader内置了file-loader。

通过上面的介绍,我们可以看到,url-loader工作分两种情况:

1.文件大小小于limit参数,url-loader将会把文件转为DataURL;

2.文件大小大于limit,url-loader会调用file-loader进行处理,参数也会直接传给file-loader。因此我们只需要安装url-loader即可。

正文:

代码和项目目录用的还是上一篇《webpack之引入图片》。

url-loader可以看作是增强版的file-loader。

url-loader把图片编码成base64格式写进页面,从而减少服务器请求。

安装url-loader

npm i -D url-loader

配置webapck.config.js

详解webpack之图片引入-增强的file-loader:url-loader

执行 npm run build

在dist目录下面找到build成功的index.html页面。在浏览器的控制台中可以看到图片以base64的格式加载进页面。

详解webpack之图片引入-增强的file-loader:url-loader

现在我们做一些优化,如果图片大小小于50kb则以base64的格式加载,否则以图片地址方式加载。

详解webpack之图片引入-增强的file-loader:url-loader

补充:简单介绍下url-loader的配置

其实跟file-loader相比差不多,url-loader会按照配置把小于一定大小的图片以dataUrl的形式储存。

引用方式与上面相同:loader的配置如下:

{
test: /\.(png|jpg|gif)$/,
loader: 'url-loader?limit=8000&name=img/[name]-[hash:5].[ext]',//小于8kb的图片以dataurl的方式存储

}

补充一个:如何打包html文件中的图片呢?

首先安装相应的loader:

$ npm install html-withimg-loader --save-dev1

在webpack.config.js中做相应的配置:

module: {
loaders: [


{



test: /\.html$/,



loader: 'html-withimg-loader'


}

]
}

最后在入口的js文件中引入html

import '../index.html';

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 的继承
Oct 01 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
Jun 24 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
Oct 10 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
Dec 12 Javascript
基于JavaScript实现窗口拖动效果
Jan 18 Javascript
使用jquery给新生的th绑定hover事件的实例
Feb 10 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
Mar 04 Javascript
原生js封装运动框架的示例讲解
Oct 01 Javascript
JavaScript如何获取到导航条中HTTP信息
Oct 10 Javascript
Nuxt.js踩坑总结分享
Jan 18 Javascript
electron踩坑之dialog中的callback解决
Oct 06 Javascript
iview实现动态表单和自定义验证时间段重叠
Jan 10 Javascript
在angularJs中进行数据遍历的2种方法
Oct 08 #Javascript
webpack之引入图片的实现及问题
Oct 08 #Javascript
angularJs中json数据转换与本地存储的实例
Oct 08 #Javascript
JS中验证整数和小数的正则表达式
Oct 08 #Javascript
webpack@v4升级踩坑(小结)
Oct 08 #Javascript
npm scripts 使用指南详解
Oct 08 #Javascript
webpack4.0 入门实践教程
Oct 08 #Javascript
You might like
php Smarty模板生成html文档的方法
2010/04/12 PHP
php中require和require_once的区别说明
2014/02/27 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
Javascript实现的分页函数
2007/02/07 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
利用Python获取操作系统信息实例
2016/09/02 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
慰问敬老院活动总结
2014/04/26 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
民间个人借款协议书
2014/09/30 职场文书
三方合作意向书范本
2015/05/09 职场文书
单位病假条范文
2015/08/17 职场文书
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis