vue3动态引入图片不显示问题

server/2024/9/23 6:36:19/

方法1.(打包后动态引用的图片未被打包入工程中,webpack,vite)

1.图片放到public 目录会更省事,不管是开发环境还是生产环境,可以始终以根目录保持图片路径的一致.

假设:
静态文件目录:src/assets/images/
我们的目标静态文件在 src/assets/images/home/icon.png

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

试require动态引入, 发现报错:require is not defind,这是因为 require 是属于 Webpack 的方法方法1(适用于处理单个链接的资源文件)

import homeIcon from '@/assets/images/home/icon.png'<img :src="homeIcon" />


方法2(适用于处理多个链接的资源文件)
推荐,这种方式传入的变量可以动态传入文件路径!!

静态资源处理 | Vite 官方中文文档
new URL() + import.meta.url
这里我们假设:
工具文件目录: src/util/pub-use.ts
pub-use.ts// 获取assets静态资源
export default  const getAssetsFile = (url: string) => {return new URL(`../assets/images/${url}`, import.meta.url).href
}


使用

import usePub from '@/util/public-use'
setup () {const Pub = usePub()const getAssetsFile = Pub.getAssetsFilereturn { getAssetsFile }
}


可以包含文件路径

<img :src="getAssetsFile('/home/icon.png')" />


方法3(适用于处理多个链接的资源文件)
不推荐,这种方式引入的文件必须指定到具体文件夹路径,传入的变量中只能为文件名,不能包含文件路径使用vite的import.meta.glob或import.meta.globEager,两者的区别是前者懒加载资源,后者直接引入。

这里我们假设:
工具文件目录: src/util/pub-use.ts
pub-use.ts// 获取assets静态资源
export default const getAssetsHomeFile = (url: string) => {const path = `../assets/images/home/${url}`;const modules = import.meta.globEager("../assets/images/home/*");return modules[path].default;
}


使用

import usePub from '@/util/public-use'
setup () {const Pub = usePub()const getAssetsHomeFile = Pub.getAssetsHomeFile return { getAssetsHomeFile }
}


不能包含文件路径

<img :src="getAssetsHomeFile('icon.png')" />
补充:如果是背景图片引入的方式(一定要使用相对路径)
.imgText {background-image: url('../../assets/images/1462466500644.jpg');
}


生产环境会自动加上hash,并且路径正确使用绝对路径在开发环境能够正常显示,但将导致打包后的路径不正确


http://www.ppmy.cn/server/101186.html

相关文章

LeetCode 热题100-4

移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums …

云计算的三大服务模式:IaaS、PaaS、SaaS的深入解析

在数字化转型的浪潮中&#xff0c;云计算以其独特的灵活性、可扩展性和成本效益&#xff0c;正逐渐成为企业IT架构的核心。云计算提供了三种主要的服务模式&#xff0c;分别是基础设施即服务&#xff08;IaaS&#xff09;、平台即服务&#xff08;PaaS&#xff09;和软件即服务…

【模型】VotingRegressor

VotingRegressor 是一个集成学习模型&#xff0c;属于 Scikit-learn 库中提供的集成方法之一。它的主要思想是通过结合多个基于不同算法的回归模型来提高预测性能。这些基础模型各自做出预测&#xff0c;然后VotingRegressor会对它们的输出进行加权平均&#xff08;或直接平均&…

android13 禁用wifi

总纲 android13 rom 开发总纲说明 目录 1.前言 2.情况分析 3.代码分析 3.1 代码位置1 3.2 代码位置2 3.3 代码位置3 4.代码修改 5. 彩蛋 1.前言 这个文章讲的是,在frameworks里面禁止打开wifi。 2.情况分析 我们打开wifi一般是 public static void turnOnWifi(Co…

算法日记day 39(动归之打家劫舍)

一、打家劫舍1 题目&#xff1a; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。…

【抓包】- Fiddler抓包教程,使用Fiddle抓取B站视频;ffmpeg的使用方法

一、预准备&#xff1a;过滤器设置 打开fiddler后&#xff0c;清空内容&#xff0c;然后播放视频。 找到与B站视频资源相关的回应&#xff0c;而后在“原始&#xff08;raw&#xff09;”标签中查看它的host信息。 发现B站视频资源的服务器DNS地址为【*bilivideo.cn】、【*bi…

C语言提高(1)

在C语言中&#xff0c;_CRT_SECURE_NO_WARNINGS 是一个宏定义&#xff0c;它通常与Microsoft Visual Studio&#xff08;MSVC&#xff09;编译器一起使用&#xff0c;用于禁用一些与安全相关的警告。这些警告通常与C标准库中的某些函数的安全性问题相关&#xff0c;特别是在处理…

【Qt】内置对话框

一.Qt内置对话框 Qt 提供了多种可复⽤的对话框类型&#xff0c;即 Qt 标准对话框。Qt标准对话框全部继承于QDialog类。常⽤标准对话框如下&#xff1a; 二.内置对话框分类 1.消息对话框 QMessageBox 1.1 概念 消息对话框是应⽤程序中最常⽤的界⾯元素。消息对话框主要⽤于为…