关于vue项目中动态引入图片作为背景图遇到的问题

本文主要是介绍关于vue项目中动态引入图片作为背景图遇到的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

vue项目中如果需要动态的引入图片作为背景图

vue2项目

图片资源已知,在指定条件下渲染出来。可以使用import或者require

// html部分
<div class="icon" :style="{background: 'url('+imgSrc+')', backgroundSize: '100% 100%'}"></div>// js部分
import getImgSrc from "./../../assets/svg/icon-qing.svg";data() {return {imgSrc: ''}
}mounted() {if(指定条件) {this.imgSrc = getImgSrc}
}
vue3+vite项目

在vue3+vite项目中发现,不能使用require,这是因为在vue3中是通过vite进行打包编译的,而require是webpack中函数,所以在vue3中不能用,而vite官网给出了替代方法new URL

const imgUrl = new URL('./img.png', import.meta.url).href
document.getElementById('hero-img').src = imgUrl

import.meta.url 是一个 ESM 的原生功能,会暴露当前模块的 URL。
但是本人使用new URL时URL也报错了,暂未找到原因,没办法就改用import引入

在vue2或者vue3项目中,都可以使用import来引入图片资源,vue3中使用import引入和上述vue2中一样,不在详述,此处特别说明一种情况,比如,对于需要引入哪个图片,图片名称还未定,需要调接口后才能知道图片名称,此时使用import就不合适了,此时可以使用import()来实现,此处拿获取高德地图的天气信息为例,代码如下:

// html部分
<div class="icon" :style="{background: 'url('+imgSrc+')', backgroundSize: '100% 100%'}"></div>
<script setup>import {ref, watch, reactive, onMounted, computed, onBeforeMount, onUnmounted} from 'vue';import weathJson from './../../utils/weath.json';// weath.json为天气状态和需要渲染的图片名称的映射集合
const weatherImg = ref('');const GetLocation = () => {axios({url: 'https://restapi.amap.com/v3/ip',method: 'post',params: {key: '高德的key'},}).then((res)=> {getWeathData(res.data.city, res.data.adcode)}).catch();
} 
const getWeathData = (cityName, cityCode) => {axios({url: "https://restapi.amap.com/v3/weather/weatherInfo",method: "GET",params: {key: "高德的key",city: cityCode,extensions: 'base',output: "JSON"},}).then(function (resp) {let newData = resp.data.lives[0];weatherData.value = newData;if(weathJson[newData.weather]) {import(`./../../assets/svg/${weathJson[newData.weather]}.svg`).then(res => {weatherImg.value = res.default})}})}onMounted(() => {GetLocation()
})
</script>

这篇关于关于vue项目中动态引入图片作为背景图遇到的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/977085

相关文章

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二