热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

详解webpackurlloader和fileloader

人人日常平凡运用url-loader和file-loader的时刻有无常常碰到以下这些题目或许疑问:开辟环境的时刻图片途径好好的,怎样宣布到线上就404了???或许说html内里援

人人日常平凡运用url-loader和file-loader的时刻有无常常碰到以下这些题目或许疑问:

  1. 开辟环境的时刻图片途径好好的,怎样宣布到线上就404了???或许说html内里援用的img途径是准确的,怎样到css内里途径404了?
  2. 图片途径究竟是怎样拼接???
  3. 这两个究竟是什么关联啊???
  4. 怎样less内里援用的背景图片途径/import其他的less文件途径不对???

假如恰好你也有以上这些题目或许疑问,那恰好这篇文章能给你很好的解答
注:这两个loader不仅能够处置惩罚图片,还能够处置惩罚音频,视频,字体等文件

url-loader作用

假如页面图片较多,发许多http要求,会下降页面机能。这个题目能够经由过程url-loader处理。url-loader会将引入的图片编码,天生dataURl并将其打包到文件中,终究只须要引入这个dataURL就可以接见图片了。固然,假如图片较大,编码会斲丧机能。因而url-loader供应了一个limit参数,小于limit字节的文件会被转为DataURl,大于limit的还会运用file-loader举行copy

file-loader作用

在css文件中定义background的属性或许在html中引入image的src,我们晓得在webpack打包后这些图片会打包至定义好的一个文件夹下,和开辟时刻的相对途径会不一样,这就会致使导入图片途径的毛病。而file-loader恰是为了处理此类题目而发生的,他修正打包后图片的贮存途径,再依据设置修正我们援用的途径,使之对应引入

联络

url-loader内部封装了file-loader。url-loader不依赖于file-loader,即运用url-loader时,只须要装置url-loader即可,不须要装置file-loader。经由过程上面的引见,我们能够看到,url-loader事情分两种状况:1.文件大小小于limit参数,url-loader将会把文件转为DataURL;2.文件大小大于limit,url-loader会挪用file-loader举行处置惩罚,参数也会直接传给file-loader。因而我们只须要装置url-loader即可

基本用法

由于url-loader包含了file-loader所以,file-loader内的option在url-loader中均能运用
以下为file-loader内的属性

《详解webpack url-loader和file-loader》

以下为url-loader内的属性
《详解webpack url-loader和file-loader》

接下来摘取几个主要的属性做申明

  1. outputPath

    该属性指明我们终究导出的文件途径
    终究导出的文件途径 === output.path + url-loader.outputPath + url-loader.name

  2. publicPath(常用于天生环境)

    该属性指明我们终究援用的文件途径(打包天生的index.html文件内里援用资本的前缀)
    终究援用的文件途径前缀 === output.publicPath + url-loader.publicPath + url-loader.name

  3. name

    该属性指明文件的终究称号。
    一样的,我们能够直接把outputPath的内容写到name中,一样能够天生对应的途径

经由上面的申明,我们得出结论,终究的静态文件途径(图片,音频,视频,字体等)=== output.publicPath + url-loader.publicPath + output.path + url-loader.outputPath + url-loader.name

有了上述的基本,我们经由过程实例来申明下开篇提出的4个题目

实例申明

《详解webpack url-loader和file-loader》

打包后的文件构造

《详解webpack url-loader和file-loader》

img内里的四个绿色的文件撤除home-logo.png都是大于10kb的大图片,其他都是小于10kb的小图标

《详解webpack url-loader和file-loader》

《详解webpack url-loader和file-loader》

以上两个截图分别是开辟环境和天生环境的图片援用途径

  • 开辟环境的时刻图片途径好好的,怎样宣布到线上就404了???或许说html内里援用的img途径是准确的,怎样到css内里途径404了?
    答:实在人人细致想想就可以晓得答案,我们在当地开辟的时刻都是localhost:8080/下面的根目次,所以当图片天生以下的相对地点是不会出题目的,然则你把一样的webpack设置放到天生环境上就不肯定了,由于天生环境大部分的前端静态文件都不是在根目次啊,有能够就是如许的目次构造

    www/
    +folder/
    +static/
    +css/
    +img/
    +js/
    +index.html

    如许你开辟环境的相对途径放到服务器上面天然就404了,所以要不然用相对途径,要不然就统一写死相对途径
    (一样原理,诠释为何css内里的背景图途径404,然则这个处理起来须要用到extract-text-webpack-plugin或许mini-css-extract-plugin这个插件,前者用于webpack4以下版本,后者是4以上版本,设置options内里的publicPath)

    《详解webpack url-loader和file-loader》

  • 图片途径究竟是怎样拼接???
    答:output.publicPath + url-loader.publicPath + output.path + url-loader.outputPath + url-loader.name
  • 这两个究竟是什么关联啊???
    答:上面基本上都说过了,总结一句话就是互相互补的关联,url-loader不能转base64的时刻file-loader来处置惩罚它
  • 怎样less内里援用的背景图片途径/import其他的less文件途径不对???
    答:这内里的触及的东西有点多,我盘算再开一篇文章来说了

文章到这里就完毕了,希望能协助到人人
(BTW,言语构造的照旧很差)


推荐阅读
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • springboot启动不了_Spring Boot + MyBatis 多模块搭建教程
    作者:枫本非凡来源:www.cnblogs.comorzlinp9717399.html一、前言1、创建父工程最近公司项目准备开始重构,框 ... [详细]
  • 由于同源策略的限制,满足同源的脚本才可以获取资源。虽然这样有助于保障网络安全,但另一方面也限制了资源的使用。那么如何实现跨域呢,以下是实现跨域的一些方法。 ... [详细]
  • 详解 Python 的二元算术运算,为什么说减法只是语法糖?[Python常见问题]
    原题|UnravellingbinaryarithmeticoperationsinPython作者|BrettCannon译者|豌豆花下猫(“Python猫 ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
author-avatar
邹杂品_433
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有