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

vue3:加载本地图片等静态资源

背景

在我们用 vue2 + webpack 的时候,加载图片资源是这样用的:

<img :src="require('@/assets/test.png')" />

这样打包后就会触发 file-loader 打包图片资源,在 dist 文件夹中就可以看到这个图片(如果图片较小会打包进代码中变为 base64 引入)。

但是在 vue3 + vite 中,使用这种方式是不行的,vite 中没有 require 会报错。
解决方案 官方文档 中提到了两种方案,今天我来验证一下。

将资源引入为 URL

import chatHealth from '@/assets/chat-health.png'
<img :src="chatHealth" alt="" />

在这里插入图片描述
可以看到,由于这张图片较小被打包成为了 base64,所以 dist 文件夹没有输出这个图片。

接下来我拿一张大图试验一下,发现确实打包出来了。
在这里插入图片描述
所以这种方法亲测有效。

new URL(url, import.meta.url)

第二种方法是:

<img :src="getImgUrl('chat-health.png')" alt="" />const getImgUrl = (name: string) => {return new URL('../../../../../assets/' + name, import.meta.url).href
}

使用这种方法,在本地运行的时候可以加载出来图片。
在这里插入图片描述
但是发到真实环境(测试/线上),发现找不到文件了,我看了下目录指向的是:
在这里插入图片描述
但这个路径并不对,然后我再看打包后的文件
在这里插入图片描述
发现打包后的文件并没有这个图片,这里我有点不太懂问题出在哪里?
感觉好像就是 vite 没有去加载这个图片,所以打包文件看不到,并不是因为图片小,我换了一个大图依旧 dist 没有,不知道是不是我哪里操作不对。

结尾

对比这两种方案,我只试验成功了第一种,第二种如果是我哪里操作不对的欢迎指正

http://www.lryc.cn/news/6256.html

相关文章:

  • 工作记录------数据库group_concat函数长度问题
  • Python基础语法
  • windows环境下安装Nginx及常用操作命令
  • python excel数据处理?
  • Hudi-集成Flink
  • 重新认识 React Hooks useContext
  • 数据库(2)--加深对统计查询的理解,熟练使用聚合函数
  • stm32f407探索者开发板(十五)——NVIC中断优先级管理
  • 【Azure 架构师学习笔记】-Azure Logic Apps(6)- Logic Apps调用ADF
  • python随机获取列表中某一元素
  • Nacos微服务笔记
  • MAC文件误删怎么办?mac数据恢复,亲测很好用的方法
  • 机械革命z2黑苹果改造计划第二番-MacOS实用软件渗透工具
  • 【LeetCode】每日一题(4)
  • Linux内核移植:内核的启动过程分析、启动配置与rootfs必要文件
  • 【代码随想录训练营】【Day14】第六章|二叉树|理论基础|递归遍历|迭代遍历|统一迭代
  • AXI-Stream 学习笔记
  • 【Linux】程序进程地址空间
  • 电压放大器在液滴微流控芯片的功能研究中的应用
  • Linux操作系统学习(进程地址空间)
  • 【排序】快速排序实现
  • YOLOv5/v7 Flask Web 车牌识别 | YOLOv7 + EasyOCR 实现车牌识别
  • 【Opencv实战】几十年前的Vlog火了:黑白老照片如何上色?这黑科技操作一定要知道,复原度超高,竟美的出奇~(图像修复神级代码)
  • React源码分析(一)Fiber
  • 小樽 C++指针—— (壹) 指针变量
  • java 代码块 万字详解
  • 杂项-图片隐写
  • 【高性价比】初学者入门吉他值得推荐购买的民谣单板吉他品牌—VEAZEN费森吉他
  • 2023年浙江交安安全员考试题库及答案
  • 【新】华为OD机试 - 跳格子(Python)