为什么要使用url-loader

在前面已经介绍了css文件可以使用第三方loader去加载。

在一个项目中,也不仅仅只有html,js和css文件,还有图片文件,字体文件等等。当我们给一个css样式设置背景图片时:



你会发现,webpack打包的时候会报错。



报错:无法处理这种格式的文件,解决这个问题就需要url-loader或者file-loader。

安装url-loader

  1. 安装url-loader,cnpm install url-loader file-loader –D
  2. 在webpack.config.js中配置第三方loader



    这个时候重新启动项目,你会发现图片被加载为:



    我们会发现,图片的url地址被默认转化为了base64格式,如果一张图片太大的话,这样的转换反而降低效率,我们希望在图片比较小的时候加载为base64,图片较大则加载原始图片。

    在webpack.config.js中如下配置:



    像在url上加参数一样给url-loader设置一个limit参数(单位字节),大于或等于给定的limit值,则不会被转为base64格式的字符串,如果小于给定的limit值,则会被转为base64字符串。



    我们可以发现图片的后缀已经是.png格式了,但是名称还不是图片原来的名称, 因为webpack在打包的时候防止名称重复,自动设置了hash名,如果想要使用图片原始的名称作为路径,则还需要给url-loader增加一个参数



    参数分析:

    • name: 文件的名称
    • hash-8: 取8位hash值作为文件名前缀
    • name: 使用图片原始的名称
    • ext:使用图片原始的后缀名

解释为什么webpack会自动给图片设置hash名,防止名称重复

如果我们在两个文件夹中分别引入两个图片名称的图片。如下所示



在html页面中新建两个div

在css样式中,分别引入这两张图片

看看webpack打包后的样式:



我们明明引入了两张不同的图片,但是他们却引入了同一张图片,因为webpack打包之后,图片会被存放在 / 目录下的内存中,仔细观察图片中的url地址,就会发现跟我们的在css样式中的引入路径并不一样,所以会出现引入同一张图片的问题。

解决问题:在url-loader中使用图片原始名称的时候,添加hash值来区别是不是同一张图片

(5)webpack中url-loader的使用的更多相关文章

  1. Webpack的详细配置,[Webpack中各种loader的安装配置]

    在使用webpack的时候,你是不是被以下这种报错所困扰: 注意看 黄色框中标注的 You may need an appropriate loader to handle this file typ ...

  2. 第五十一篇:webpack中的loader(二) --less-loader

    好家伙 先扩充一下知识点: 什么是.less文件? 作为一名前端开发的同学,很多时候我们都无法避免地要去写大量的 CSS 代码, 而且耗费的时间还不少,所以学习一种能够提升开发效率的 CSS 预处理器 ...

  3. 第五十篇: webpack中的loader(一) --css-loader

    好家伙, 1.webpack配置中devServer节点的常用配置项 devServer:{ //首次打包完成后,自动打开浏览器 open:ture, //在http协议中,如果端口号是80,则可以被 ...

  4. Vue系列之 => webpack的url loader

    安装: npm i url-loader file-loader -D  //url-loader内部依赖file-loader webpack.config.js const path = requ ...

  5. 如何在webpack中使用loader

    一.什么是loader loader 用于对模块的源代码进行转换.loader 可以使你在 import 或"加载"模块时预处理文件.因此,loader 类似于其他构建工具中“任务 ...

  6. webpack 中,loader、plugin 的区别

    loader 和 plugin 的主要区别: loader 用于加载某些资源文件. 因为 webpack 只能理解 JavaScript 和 JSON 文件,对于其他资源例如 css,图片,或者其他的 ...

  7. Webpack 2 视频教程 014 - 深入理解 Webpack 2 中的 loader

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  8. 如何在webpack中成功引用到图片?

    打包图片时,你可曾遇到在产出目录文件夹找不到图片,即便找到了,但是页面说引用不到资源?页面上或者文件中引用的图片地址不对? 一.在webpack中引入图片需要url-loader //webpack配 ...

  9. 在webpack中使用postcss之插件包precss

    precss是一个预处理css的插件包,集成了很多postcss插件的功能,比如嵌套,变量,继承,混合,循环,判断.下面来介绍如何在webpack中使用precss.一.新建项目1.新建package ...

  10. webpack配置常用loader加载器

    webapck中使用loader的方法有三种 使用loader之前必须运行安装 : npm install --save-dev xxx-loader (1)通过CLI : 命令行中运行 webpac ...

随机推荐

  1. NAT网络地址转化和DHCP

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理.分配IP地址,使网络环境中的主机动态的获得I ...

  2. Zookeeper——Watcher原理详解

    文章目录 引言 正文 一.如何注册监听 二.如何触发监听事件 三.事件类型有哪些 四.Watcher可以被无限次触发么?为什么要这么设计? 五.Watcher实现原理 1. 客服端发送请求 a. 初始 ...

  3. S7-1200视频教程: S7-1200的功能与特点-跟我学 - 1/112

    S7-1200视频教程: S7-1200的功能与特点-跟我学 - 1/112 观看连接: http://www.elearning.siemens.com.cn/video/Course/201012 ...

  4. 004.OpenShift命令及故障排查

    一 CLI访问OpenShift资源 1.1 资源操作 OCP将OpenShift集群中的为由主节点管理的对象统称为资源,如:node.service.pod.project.deployment.u ...

  5. Beta冲刺<5/10>

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第五天(05.23) 作业正文 如下 其他参考文献 ... B ...

  6. 一个简单的 react 实例: < TodoList >

    <  react     TodoList:  > 组件: //引入React : import React from 'react'; //组件 class TodoList exten ...

  7. Java中String创建原理深入分析

    创建String对象的常用方式: 1.  使用new关键字 String s1 = new String(“ab”);  // 2.  使用字符串常量直接赋值 String s2 = “abc”; 3 ...

  8. 下订单更新订单表然后减少库存表中的数据,出现库存超卖,使用数据库和redis坚决库存超卖的问题

    上面的代码更新库存的数据,存在多线程的问题,第一种方法使用synchronized关键字修饰的语句块代码,但是性能较低,并且还是存在问题的 在分布式的场景下,当前库存系统部署在多个tomcat上,即使 ...

  9. 网易java高级开发课程 面对上亿数据量,网易用啥技术?

  10. Office2019 相关激活秘钥

    零售版 W8W6K-3N7KK-PXB9H-8TD8W-BWTH9 批量板 N9J9Q-Q7MMP-XDDM6-63KKP-76FPM