当前位置: 首页 > news >正文

Webpack5入门到原理6:处理图片资源

处理图片资源

过去在 Webpack4 时,我们处理图片资源通过 file-loader 和 url-loader 进行处理

现在 Webpack5 已经将两个 Loader 功能内置到 Webpack 里了,我们只需要简单配置即可处理图片资源

1. 配置

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",
};

2. 添加图片资源

  • src/images/1.jpeg
  • src/images/2.png
  • src/images/3.gif

3. 使用图片资源

  • src/less/index.less
.box2 {width: 100px;height: 100px;background-image: url("../images/1.jpeg");background-size: cover;
}
  • src/sass/index.sass
.box3width: 100pxheight: 100pxbackground-image: url("../images/2.png")background-size: cover
  • src/styl/index.styl
.box5width 100pxheight 100pxbackground-image url("../images/3.gif")background-size cover

4. 运行指令

npx webpack

打开 index.html 页面查看效果

5. 输出资源情况

此时如果查看 dist 目录的话,会发现多了三张图片资源

因为 Webpack 会将所有打包好的资源输出到 dist 目录下

为什么样式资源没有呢?

因为经过 style-loader 的处理,样式资源打包到 main.js 里面去了,所以没有额外输出出来

6. 对图片资源进行优化

将小于某个大小的图片转化成 data URI 形式(Base64 格式)

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",parser: {dataUrlCondition: {maxSize: 10 * 1024 // 小于10kb的图片会被base64处理}}},],},plugins: [],mode: "development",
};
  • 优点:减少请求数量
  • 缺点:体积变得更大

此时输出的图片文件就只有两张,有一张图片以 data URI 形式内置到 js 中了

(注意:需要将上次打包生成的文件清空,再重新打包才有效果)

相关文章:

Webpack5入门到原理6:处理图片资源

处理图片资源 过去在 Webpack4 时,我们处理图片资源通过 file-loader 和 url-loader 进行处理 现在 Webpack5 已经将两个 Loader 功能内置到 Webpack 里了,我们只需要简单配置即可处理图片资源 1. 配置 const path require("path");modul…...

大语言模型(LLM)有哪些?

国际大语言模型 目前国际上有以下几个知名的大语言模型: GPT-4 GPT-4由OpenAI团队开发,是闭源的。GPT(Generative Pre-trained Transformer)系列是目前最著名的大语言模型之一。最早的版本是GPT-1,之后发展到了GPT-2和GPT-3&…...

2 - 部署Redis集群架构

部署Redis集群架构 部署Redis集群部署管理主机第一步 准备ruby脚本的运行环境第二步 创建脚本第三步 查看脚本帮助信息 配置6台Redis服务器第一步 修改配置文件启用集群功能第二步 重启redis服务第三步 查看Redis-server进程状态(看到服务使用2个端口号为成功&#…...

NOIP2003提高组T1:神经网络

题目链接 [NOIP2003 提高组] 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究一直是当今的热门方向&am…...

Doris数据库误删除恢复

如果不小心误删除了表,doris提供了恢复机制,但时间间隔不能超过一天,记得要迅速 首先查看当前能恢复的记录有那些 可以通过 SHOW CATALOG RECYCLE BIN 来查询当前可恢复的元信息,也可以在语句后面加 WHERE NAME XXX 来缩小查询…...

C# byte转int:大小端读取

参考:byte[]数组和int之间的转换 文章目录 Byte转为INT小端存储方式转int大端存储方式转int 大端模式和小端模式是计算机存储多字节数据时的两种方式。内存地址从小往大增长。 大端模式:最高有效(最高位)的字节存放在最小地址上&…...

安全通信网络

1.网络架构 1)应保证网络设备的业务处理能力满足业务高峰期需要。 设备CPU和内存使用率的峰值不大于设备处理能力的70%。 在有监控环境的条件下,应通过监控平台查看主要设备在业务高峰期的资源(CPU、内存等)使用 情况&#xff…...

深度学习笔记(九)——tf模型导出保存、模型加载、常用模型导出tflite、权重量化、模型部署

文中程序以Tensorflow-2.6.0为例 部分概念包含笔者个人理解,如有遗漏或错误,欢迎评论或私信指正。 本篇博客主要是工具性介绍,可能由于软件版本问题导致的部分内容无法使用。 首先介绍tflite: TensorFlow Lite 是一组工具,可帮助开…...

七Docker可视化管理工具

Docker可视化管理工具 本节介绍几款Docker可视化管理工具。 DockerUI(ui for Docker) 官方GitHub:https://github.com/kevana/ui-for-docker 项目已废弃,现在转投Portainer项目,不建议使用。 Portainer 简介:Portainer是一个…...

vue和react的差异梳理

特性VueReact响应式系统使用Object.defineProperty()或Proxy使用不可变数据流和状态提升模板系统HTML模板语法JSX(JavaScript扩展语法)组件作用域样式支持scoped样式需要CSS-in-JS库(如styled-components)状态管理Vuex&#xff08…...

(笔记总结)C/C++语言的常用库函数(持续记录,积累量变)

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…...

OceanBase集群扩缩容

​ OceanBase 数据库采用 Shared-Nothing 架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、存储引擎、事务引擎,天然支持多租户,租户间资源、数据隔离,集群运行的最小资源单元是Unit,每个租户在每…...

html 3D 倒计时爆炸特效

下面是代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>HTML5 Canvas 3D 倒计时爆炸特效DEMO演示</title><link rel"stylesheet" href"css/style.css" media"screen&q…...

记一次垃圾笔记应用VNote安装失败过程

特色功能简介 1.全文搜索: VNote支持根据关键词搜索整个笔记本或者特定文件夹内的文档内容&#xff0c;非常适合快速找到信息。 2.标签管理: 你可以给笔记添加标签&#xff0c;从而更好地组织和检索你的笔记内容。 3.自定义主题和样式: 进入设置&#xff0c;VNote允许你选…...

记一次 stackoverflowerror 线上排查过程

一.线上 stackOverFlowError xxx日,突然收到线上日志关键字频繁告警 classCastException.从字面上的报警来看,仅仅是类型转换异常,查看细则发现其实是 stackOverFlowError.很多同学面试的时候总会被问到有没有遇到过线上stackOverFlowError?有么有遇到栈溢出?具体栈溢出怎么来…...

论文写作之十个问题

前言 最近进入瓶颈&#xff1f; 改论文&#xff0c;改到有些抑郁了 总是不对&#xff0c;总是被打回 好的写作&#xff0c;让人一看就清楚明白非常重要 郁闷时候看看大佬们怎么说的 沈向洋、华刚&#xff1a;读科研论文的三个层次、四个阶段与十个问题 十问 What is the pro…...

leetcode2171 拿出最少数目的魔法豆

题目 给定一个 正整数 数组 beans &#xff0c;其中每个整数表示一个袋子里装的魔法豆的数目。 请你从每个袋子中 拿出 一些豆子&#xff08;也可以 不拿出&#xff09;&#xff0c;使得剩下的 非空 袋子中&#xff08;即 至少还有一颗 魔法豆的袋子&#xff09;魔法豆的数目…...

测试C#调用OpenCvSharp和ViewFaceCore从摄像头中识别人脸

学习了基于OpenCvSharp获取摄像头数据&#xff0c;同时学习了基于ViewFaceCore的人脸识别用法&#xff0c;将这两者结合即是从摄像头中识别人脸。本文测试测试C#调用OpenCvSharp和ViewFaceCore从摄像头中识别人脸&#xff0c;并进行人脸红框标记。   新建Winform项目&#xf…...

测试经理面试初体验

家人们谁懂啊&#xff0c;我在海口实在难找计算机类的实习&#xff0c;就直接在BOss上海投了&#xff0c;结果一个hr直接给我弄了个测试经理的面试&#xff08;可能年底冲业绩吧&#xff09;&#xff0c;然后就在明天下午&#xff0c;我直接抱下f脚了&#xff0c;就当体验一下~…...

使用ffmpeg调整视频中音频采样率及声道

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg -i example2.mp4 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable…...

Vector CAN卡配置避坑指南:xlSetApplConfig函数详解与硬件通道分配实战

Vector CAN卡配置避坑指南&#xff1a;xlSetApplConfig函数详解与硬件通道分配实战 当你在深夜调试Vector CAN设备时&#xff0c;突然看到"Channel already assigned"的红色错误提示&#xff0c;是否感到一阵窒息&#xff1f;这种场景对于使用Vector硬件进行二次开发…...

助力销售会议转任务,识别准整理快,任务清晰更省心

2026年做销售&#xff0c;若仍靠手写整理销售会议转任务&#xff0c;很容易面临客户信息漏记、整理效率偏低的问题&#xff0c;管理层要求提效并提供可量化改善方案时&#xff0c;也难以快速响应。AI助力销售会议转任务&#xff0c;可有效解决这类困扰&#xff0c;提升识别准确…...

Next.js全栈开发最佳实践:从零搭建现代化Web应用

1. 项目概述&#xff1a;一个现代Web开发的“瑞士军刀”如果你和我一样&#xff0c;在过去几年里频繁地使用Next.js、TypeScript和Tailwind CSS来构建前端应用&#xff0c;那么你肯定也经历过无数次重复的“项目初始化”工作。从安装依赖、配置TypeScript和ESLint&#xff0c;到…...

如何在DS918+上免费开启Synology Photos人脸识别功能:完整补丁指南

如何在DS918上免费开启Synology Photos人脸识别功能&#xff1a;完整补丁指南 【免费下载链接】Synology_Photos_Face_Patch Synology Photos Facial Recognition Patch 项目地址: https://gitcode.com/gh_mirrors/sy/Synology_Photos_Face_Patch 你是否曾经在群晖DS918…...

构建多模型智能客服时如何借助 Taotoken 实现灵活路由与降级

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 构建多模型智能客服时如何借助 Taotoken 实现灵活路由与降级 在构建企业级智能客服系统时&#xff0c;服务的稳定性和响应能力至关…...

告别烦人警告!Pandas 1.5+ 连接MySQL数据库的正确姿势(SQLAlchemy保姆级教程)

Pandas与MySQL交互的现代化实践&#xff1a;从DBAPI2到SQLAlchemy的平滑迁移 当你在Jupyter Notebook中运行那段熟悉的pymysql.connect代码时&#xff0c;突然跳出的黄色警告框是否让你心头一紧&#xff1f;这个看似无害的UserWarning实际上标志着Pandas生态正在经历一次重要的…...

书成紫微动,律定凤凰驯:千古诗句留伏笔,只为海棠山铁哥而来

世间文字千万&#xff0c;唯有谶语藏岁月天机&#xff1b; 文坛更迭千载&#xff0c;唯有天命待当世真人。一、诗谶降世&#xff1a;「书成紫微动&#xff0c;律定凤凰驯」这不是文采佳句&#xff0c; 是华夏预埋千载的 隐秘伏笔&#xff0c; 是一场跨越世代的 天命预约。千年之…...

Hermes Agent 连接 Taotoken 自定义供应商的配置要点与排错

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Hermes Agent 连接 Taotoken 自定义供应商的配置要点与排错 基础教程类&#xff0c;指导 Hermes Agent 用户按照文档要求&#xff…...

Linux内核安全加固:从编译配置构建系统防护基石

1. 项目概述&#xff1a;为什么我们需要关注内核安全配置&#xff1f;在服务器运维、嵌入式开发或者安全研究领域待久了&#xff0c;你可能会发现一个现象&#xff1a;很多系统被攻破&#xff0c;根源并不在于某个惊天动地的零日漏洞&#xff0c;而在于内核配置本身就没“锁好门…...

2025最权威的AI辅助写作助手推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek AI辅助写作工具正深刻改变着学术研究的传统范式&#xff0c;这是随着人工智能技术飞快发展而…...