webpack处理图片资源(jpeg,jpg,png等)

news2024/11/29 17:33:33

在webpack5以前,我们处理图片资源通过 file-loaderurl-loader 进行处理
现在 Webpack5 已经将两个 Loader 功能内置到 Webpack 里了,我们只需要简单配置即可处理图片资源

webpack.config.js配置

{
  test: /\.(png|jpe?g|gif|webp)$/,
  type: "asset",
},

完整代码如下:

const path = require("path");

module.exports = {
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "main.js",
  },
  module: {
    rules: [
      {
        // 用来匹配 .css 结尾的文件
        test: /\.css$/,
        // use 数组里面 Loader 执行顺序是从右到左
        use: ["style-loader", "css-loader"],
      },
      {
        test: /\.less$/,
        use: ["style-loader", "css-loader", "less-loader"],
      },
      {
        test: /\.s[ac]ss$/,
        use: ["style-loader", "css-loader", "sass-loader"],
      },
      {
        test: /\.styl$/,
        use: ["style-loader", "css-loader", "stylus-loader"],
      },
      {
      	//处理图片文件
        test: /\.(png|jpe?g|gif|webp)$/,
        type: "asset",
      },
    ],
  },
  plugins: [],
  mode: "development",
};

添加图片资源

在这里插入图片描述
使用图片资源

在这里插入图片描述
在这里插入图片描述
执行打包命令

npx webpack

效果如下:
在这里插入图片描述

可以看到背景图生效了,打包后的图片文件会直接放到dist目录下:
在这里插入图片描述
对图片资源优化

将小于10k的图片资源,处理成base64格式

      {
        // 用来匹配图片文件
        test: /\.(png|jpe?g|gif|webp)$/,
        type: "asset",
        parser: {
          dataUrlCondition: {
            maxSize: 10 * 1024, // 小于10kb的图片会被base64处理
          },
        },
      },

到这里可能有的小伙伴就要问了,为什么要只将小于10k的图片资源处理成base64呢,base64格式的图片有什么特点呢?

  1. 减少HTTP请求:将小于10k的图片处理成base64后,可以直接将图片嵌入到HTML、CSS或JS文件中,避免额外的HTTP请求,从而加快页面加载速度。
  2. 提高页面加载速度:在页面加载时,base64格式的图片可以直接从文件中读取,而不需要到服务器请求图片资源,从而可以减少页面加载时间。
  3. 更加安全:base64格式的图片能直接嵌入到HTML、CSS或JS文件中,不需要通过图片的URL来加载图片资源,从而可以更加保护图片资源的安全性。
  4. 适用于小图片:base64格式的图片适合处理小图片,因为base64编码可以将原始图片数据增加33%左右,如果图片太大,会增加文件大小和页面加载时间。

在这里插入图片描述
如上图可以看到2.png只有9k,我们添加配置之后,应该会将其转换成base64.

webpack.config.js配置

// Node.js的核心模块,专门用来处理文件路径
const path = require("path");

module.exports = {
  // 入口
  // 相对路径和绝对路径都行
  entry: "./src/main.js",
  // 输出
  output: {
    // path: 文件输出目录,必须是绝对路径
    // path.resolve()方法返回一个绝对路径
    // __dirname 当前文件的文件夹绝对路径
    path: path.resolve(__dirname, "dist"),
    // filename: 输出文件名
    filename: "main.js",
    clean: true, // 自动将上次打包目录资源清空
  },
  // 加载器
  module: {
    rules: [
      {
        // 用来匹配 .css 结尾的文件
        test: /\.css$/,
        // use 数组里面 Loader 执行顺序是从右到左
        use: ["style-loader", "css-loader"],
      },
      {
        // 用来匹配.less结尾的文件
        test: /\.less$/,
        use: ["style-loader", "css-loader", "less-loader"],
      },
      {
        test: /\.s[ac]ss$/,
        use: ["style-loader", "css-loader", "sass-loader"],
      },
      {
        // 用来匹配图片文件
        test: /\.(png|jpe?g|gif|webp)$/,
        type: "asset",
        parser: {
          dataUrlCondition: {
            maxSize: 10 * 1024, // 小于10kb的图片会被base64处理
          },
        },
      },
    ],
  },
  // 插件
  plugins: [],
  // 模式
  mode: "development", // 开发模式
};

执行打包

npx webpack

效果如图:
在这里插入图片描述
可以看到效果还是和上次没处理base64之前一样的

在这里插入图片描述
这时可以看到dist目录下只有一张图片了,另一张被处理成了base64,以 data URI 形式内置到 js 中了
在这里插入图片描述
再补充一点自动清空上次的打包资源
只需要在output配置对象下加上clean: true就行了,如下:

output: {
    path: path.resolve(__dirname, "dist"),
    filename: "static/js/main.js",
    clean: true, // 自动将上次打包目录资源清空
  },

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes高级存储

Kubernetes高级存储 PV PVC k8s支持的存储系统很多,全部掌握不现实。为了屏蔽底层存储实现的细节,方便用户使用,k8s引入PV和PVC两种资源对象。 PV(Persistent Volume)持久化卷,对底层共享存储的抽象,一般由k8s管理员进…

如何通过Shopee大数据选品,在3分钟选出热销爆款!

近年来,随着互联网技术的不断发展,人工智能和大数据成为越来越多人们熟知的概念。通过大数据分析进行选品,能够快速精准地预判各行业类目的变化趋势,帮助我们有效地优化选品、做出正确的销售决策。 大数据选品是指通过Shopee多品类…

Linux——进程地址空间

目录 1、程序地址空间 1.1 研究背景 1.2 程序地址空间 1.3 空间布局图代码测试 1.4 用户空间及内核空间 1.5 Linux及windows对比 1.6 分析Linux下虚拟地址及物理地址 2、进程地址空间 2.1 地址空间概念 2.2 地址空间及页表映射分析 2.3 写时拷贝及虚拟地址再次分析 …

【Flowable】Flowable网关

网关用来控制流程的流向 1.排他网关 排他网关(exclusive gateway)(也叫异或网关 XOR gateway,或者更专业的,基于数据的排他网关 exclusive data-based gateway),用于对流程中的决策建模。当执行…

类脑计算讲解

当前,人工智能的发展有两个主要路径,一个是沿计算机科学发展而来的深度学习途径,另一个是沿着模仿人脑发展而来的类脑计算途径。 类脑计算途径 这个方向是以模拟人脑神经网络计算为基础而发展出的一种新型芯片,通过模拟神经元和…

直播商品库功能(互动功能接收端JS-SDK)

功能概述 图:边看边买--效果截图 本模块主要处理商品库相关逻辑,如展示商品、商品推送和商品上下架等消息。 初始化及销毁 在实例化该模块并进行使用之前,需要对SDK进行初始化配置,详细见参考文档。 在线文件引入方式 // scri…

【论文阅读】Lora

概述 目的在原有大模型上进行fine tune,训练个性化模型 idea:将pretrained model参数冻住,额外训练一个module进行调整,最终输出是原始输出经过module的输出。 技巧:通过低秩分解大大降低了需要训练参数的数量。矩阵…

简单AES加解密Demo——带你了解AES

1.AES简介 AES的全称是Advanced Encryption Standard,意思是高级加密标准。它的出现主要是为了取代DES加密算法的,因为我们都知道DES算法的密钥长度是56Bit,因此算法的理论安全强度是2的56次方。但二十世纪中后期正是计算机飞速发展的阶段&am…

外包的水太深了,18k的阿里外包不太敢去.....

有挺多测试员曾在BAT、网易这些大厂做过外包,想必大家也是非常关心此类问题,我就想介绍下“什么是外包?”,“外包公司的现状”,就“为什么这么多人鄙视外包测试岗?”、”阿里18K的外包测试岗能去吗&#xf…

phpstudy搭建dvwa(以及搭建dvwa问题解决)

目录 phpstudy 下载 问题解决 启动问题 DVWA 下载 安装 配置 phpstudy 下载 小皮面板(phpstudy) - 让天下没有难配的服务器环境! (xp.cn) 问题解决 启动问题 要使用dvwa靶场,Apache和myql都是需要启动的,但是可能会遇到mysql启动不…

三大抽样分布

1.三大抽样分布 本人博客:总体分布、样本分布、抽样分布的区别 每一个样本统计量(本质是随机变量)都有一个分布 以样本平均数为例,它是总体平均数的一个估计量,如果按照相同的样本容量,相同的抽样方式&am…

LVS负载均衡群集——NAT模式实例

目录 一、集群与分布式1.1 集群的含义1.2 LVS模型1.3 系统性能扩展方式1.4 群集的三种类型1.4.1 负载均衡群集1.4.2 高可用群集1.4.3 高性能运算群集 1.5 LVS 的负载调度算法①轮询(Round Robin)②加权轮询(Weighted Round Robin)…

电脑重装系统到一半遇到死机该如何解决

在进行电脑重装系统的过程中,有时会遇到系统卡住不动的情况,让人苦恼不已。本文将为您解析电脑重装系统中途卡住的原因,并提供有效的解决方法,帮助您顺利完成系统重装。 工具/原料: 系统版本:windows10专业…

.Net Core 6 WebApi 项目搭建(二)

书接上文,上文写了个简单的.net core api程序创建流程,今天来写一下简单项目搭建步骤。 一.Autofac反射程序集方式服务注册 我们这里还是使用Autofac容器,具体使用教程可参考文章《.NET Core基础知识-依赖注入(Autofac&#xff…

七、进程程序替换

文章目录 一、进程程序替换(一)概念(二)为什么程序替换(三)程序替换的原理(四)如何进行程序替换1. execl2. 引入进程创建——子进程执行程序替换,会不会影响父进程呢? &…

node.js卸载、安装、配置详解

node.js卸载、安装、配置详解 一、 node.js卸载二、下载安装2.1 下载2.2 安装2.2.1 选择msi安装2.2.2 选择zip安装 三、配置3.1 环境变量配置3.2 修改缓存、全局模块路径3.3 全局安装3.4 设置淘宝镜像3.5 全局安装 四、node-red安装及配置 一、 node.js卸载 第一步&#xff1a…

Salesforce顾问如何实现逆袭成为公司CIO?

Salesforce是一个适用于所有业务流程的绝佳平台,它的设置方式意味着使用者可以培养出独特的技能。其中一些从业者非常适合担任高管,Trailblazers通常会晋升到高层职位。 本文将帮助Trailblazers了解职位晋升需要的能力,为Salesforce之旅做好…

【大数据原理与技术】期末习题总结大全,建议收藏

【大数据原理与技术】期末习题总结大全,建议收藏 📢📢题目来源于B站,慕课网,百度 ,适用于期末复习,内容仅供参考,祝大家考试顺利! 📢以下思维导图我是根据我们…

LiveGBS国标GB/T28181流媒体平台功能-作为下级国标平台级联到第三方海康大华宇视华为等国标平台及其它政务公安内网国标视频平台

LiveGBS国标GB/T28181流媒体平台功能-作为下级国标平台级联到第三方海康大华宇视华为等国标平台及其它政务公安内网国标视频平台 1、GB/T28181级联是什么2、搭建GB28181国标流媒体平台3、获取上级平台接入信息3.1、如何提供信息给上级3.2、上级国标平台如何添加下级域3.2、接入…

固定翼、免像控、相对精度优于10cm,农村不动产项目验证

前言 在航测外业作业中,布设相控点应该是耗时最多的工作,繁琐而辛苦。本次,中水成勘院联合成都睿铂,以睿铂DG4pros五镜头倾斜相机为载荷,纵横CW10型固定翼无人机为载机,共同进行免像控相对精度项目验证。希…