Vue3与TypeScript中动态加载图片资源的解决之道

在前端开发中,Vue.js已成为一个备受欢迎的框架,尤其是在构建单页面应用时。Vue3的发布更是带来了许多性能优化和新特性,而TypeScript的加入则进一步提升了代码的可维护性和健壮性。然而,在实际的项目开发中,我们有时会遇到一些问题,比如在Vue3与TypeScript中动态加载图片资源时出现的404错误。本文将围绕这个问题展开讨论,并提供解决方案。

一、问题概述

在Vue3结合TypeScript的项目中,我们通常需要动态地加载并显示图片资源。一种常见的做法是使用<img>标签的src属性来指定图片的路径。然而,当我们尝试通过import语句来导入图片路径,并将其赋值给src属性时,却可能会遇到404错误。这是因为Webpack等打包工具在处理静态资源时,并不会将图片的路径直接暴露给JavaScript代码,而是将其转换为模块化的形式。

二、解决方案

要解决这个问题,我们需要确保图片资源能够被正确地打包和引用。以下是一种可行的解决方案:

  1. 使用require代替import

在Vue3与TypeScript中,我们可以使用require函数来动态地加载图片资源。require函数会返回一个模块化的图片路径,这个路径可以被直接赋值给<img>标签的src属性。例如:

 

typescript复制代码

const imgSrc = require("/src/assets/icons/sun.png");

然后,在模板或字符串拼接中使用这个imgSrc变量:

 

typescript复制代码

html += '<img src="' + imgSrc + '" ... />';

import imgSrc from "/src/assets/icons/sun.png";

import imgSrc from "/src/assets/icons/sun.png";
let html = '';html +='<div style="margin: 0px 4px;  display: flex;"> <img src="'+imgSrc+'" style="margin-top:10px; position:absolute; z-index:10; margin-left:-12px; width: 15px; height: 15px;"/><div  style="margin-left: -14px; margin-right: 4px; margin-top:-6px; width: 78px; height: 28px; line-height: 28px; font-size: 12px; text-align: right; color: ' +myColor + '; font-weight: 450;white-space:nowrap;text-overflow:clip;overflow:hidden"> ' +s.employeeName + ' </div>' + tmpSpan +'</div><div style="width: 76px; margin-top: -13px; color:#818183; height: 18px; line-height: 14px; font-size: 11px;text-align: center;">(疑流失)</div></div>';
  1. 配置Webpack处理静态资源

如果你的项目使用Webpack作为打包工具,你还可以通过配置Webpack来处理静态资源。确保Webpack的配置文件(如vue.config.jswebpack.config.js)中包含了正确的loader来处理图片文件,比如url-loaderfile-loader

  1. 使用公共路径

在Vue应用中,你可能需要设置一个公共路径(publicPath)来指定静态资源的根目录。这可以通过在vue.config.js中设置publicPath选项来实现。确保你的图片路径是基于这个公共路径的。

  1. 检查路径正确性

确保你提供的图片路径是正确的。路径应该是相对于项目的根目录或公共路径的。如果路径不正确,Webpack将无法找到并打包图片资源。

三、总结

在Vue3与TypeScript中动态加载图片资源时遇到的404错误,通常是由于图片路径处理不当导致的。通过使用require函数、配置Webpack处理静态资源、设置公共路径以及检查路径正确性等方法,我们可以有效地解决这个问题。在实际开发中,我们应该根据项目的具体需求和配置来选择合适的解决方案。同时,也要注意保持代码的清晰和可维护性,以便在后续的开发和维护中能够更加方便地处理类似的问题。

参考链接:【vue 动态显示图片报错 404 -  CSDN App】

http://t.csdnimg.cn/raCZM

欢迎关注我的微信技术公众号: 前端组件开发

d848d5658a07453c843277846948c608.png

欢迎加入“前端组件开发学习”交流群,一起学习成长!可关注  “前端组件开发” 公众号后,私信后申请入群。

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

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

相关文章

牛客NC93 设计LRU缓存结构【hard 链表,Map Java】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84 思路 双向链表map最新的数据放头结点&#xff0c;尾节点放最老的数据&#xff0c;没次移除尾巴节点本地考察链表的新增&#xff0c;删除&#xff0c;移动节点参考答案Java im…

第六篇: 3.5 性能效果 (Performance)- IAB/MRC及《增强现实广告效果测量指南1.0》

​​​​​​​ 翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇 广告效果测量定义和其他矩阵之- 3.1 广告印象&#xff08;AD Impression&#xff09;第三篇 广告效果测量定义和其他矩阵之- 3.2 可见性 &#xff08;Viewability…

精准备份:如何自动化单个MySQL数据库的备份过程

自动化备份对于维护数据库的完整性和安全性至关重要。本指南将向您展示如何使用Shell脚本来自动化MySQL数据库的备份过程。 备份脚本内容 首先&#xff0c;这是我们将使用的备份脚本&#xff1a; #!/bin/bash# 完成数据库的定时备份 # 备份路径 BACKUP/data/backup/db # 当前…

正确使用@Autowired

目录 一、前言二、跟着官方文档&#xff0c;学习正确使用Autowired0、实验环境1、通过构造方法进行注入1.1 问题1&#xff1a;那万一没有这个CustomerPreferenceDao对象&#xff0c;会报错吗&#xff1f; 2、通过setter方法注入3、通过方法注入&#xff08;这个方法可以是任意名…

Shell学习 - 2.26 Shell expr命令:对整数进行运算

expr 是 evaluate expressions 的缩写&#xff0c;译为“表达式求值”。Shell expr 是一个功能强大&#xff0c;并且比较复杂的命令&#xff0c;它除了可以实现整数计算&#xff0c;还可以结合一些选项对字符串进行处理&#xff0c;例如计算字符串长度、字符串比较、字符串匹配…

【Android】apk安装报错:包含病毒: a.gray.BulimiaTGen.f

​ 有时候apk安装或者更新时&#xff0c;显示&#xff1a;[高风险]包含病毒: a.gray.BulimiaTGen.f这种bug&#xff1b; 原因&#xff1a;这是手机管家误报病毒。 处理方法&#xff1a;我看网上其他资料可以进行申诉&#xff0c;也可以进行apk加固&#xff0c;我这边尝试用360…

MSsql数据库 sql注入

和mysql不同&#xff1b;每个数据库都有自己的信息总结表四个系统数据库 master sysdatabases :所有数据库信息 name &#xff1a;所有数据库名 sysobjects :数据库所有对象的信息 syscolumns :字段信息 固定字段名 name 对象名 id 对象id xtype 对象类型代码 xtypeU 用户创建的…

【Linux】 Vim:掌握高效编辑的艺术

以为光阴 一分一秒 微不足道 可以任性 无拘无束 心高气傲 放下尊严又赌上性命 千金已散尽 只换来一张空头支票 年少时候豪言壮语许下承诺 积攒半生仍没故事值得诉说 最后一天许下的心愿 是你不要再记得我 &#x1f3b5; 杨宗纬《千金散尽》 在文本编辑器的…

无参数绕过RCE

一.什么是无参数 顾名思义&#xff0c;就是只使用函数&#xff0c;且函数不能带有参数&#xff0c;这里有种种限制&#xff1a;比如我们选择的函数必须能接受其括号内函数的返回值&#xff1b;使用的函数规定必须参数为空或者为一个参数等 无参数题目特征 if(; preg_replace…

C语言中的宏MACRO的用途

1&#xff09;硬码实义化 用宏来将一个硬码数值&#xff0c;进行实义化。、 #define DEBUG_CONSOLE_DEVICE_TYPE_NONE 0U /*!< No debug console. */ #define MCU_MEM_MAP_VERSION 0x0300U#define ADC_HC_ADCH_MASK …

基于小程序+ssm实现的悬赏信息发布系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;ssm 【…

2024年妈妈杯数学建模MathorCup数学建模思路B题思路解析+参考成品

1 赛题思路 (赛题出来以后第一时间在群内分享&#xff0c;点击下方群名片即可加群) 2 比赛日期和时间 报名截止时间&#xff1a;2024年4月11日&#xff08;周四&#xff09;12:00 比赛开始时间&#xff1a;2024年4月12日&#xff08;周五&#xff09;8:00 比赛结束时间&…

数字人解决方案——Champ单个视频单张图像生成可控且一致的人体视频生成

概述 Champ是阿里巴巴集团、南京大学和复旦大学的研究团队共同提出了一种创新的人体动画生成技术&#xff0c;Champ能够在仅有一段原始视频和一张静态图片的情况下&#xff0c;激活图片中的人物&#xff0c;使其按照视频中的动作进行动态表现&#xff0c;极大地促进了虚拟主播…

【Emgu CV教程】10.12、Moments()函数计算轮廓矩和质心

文章目录 一、概念介绍1.矩2.矩能干什么3.矩函数 二、演示1.原始素材2.代码3.运行结果 一、概念介绍 1.矩 矩&#xff0c;英文叫moment&#xff0c;是一个数学中的概念&#xff0c;以下的解释来自百度百科&#xff1a; 是不是看不懂&#xff0c;没关系&#xff0c;数学基础不…

002 spring

文章目录 UserController.javaUserMapperImpl.javaSchool.javaStudent.javaUser1ServiceImpl.javaUserServiceImpl.javaAnnotationContext.xmlApplicationContext.xmlUserControllerTest.javaStudentTest.javapom.xml UserController.java package com.aistart.controller;impo…

leetcode605-Can Place Flowers

题目&#xff1a; 假设有一个很长的花坛&#xff0c;一部分地块种植了花&#xff0c;另一部分却没有。可是&#xff0c;花不能种植在相邻的地块上&#xff0c;它们会争夺水源&#xff0c;两者都会死去。 给你一个整数数组 flowerbed 表示花坛&#xff0c;由若干 0 和 1 组成&a…

mysqldump: Got error: 1049: Unknown database ‘root‘ when selecting the datab

1.问题描述 MySQL版本号&#xff1a;MySQL Server 8.3MySQL持久化到处数据库结构及数据 mysqldump: Got error: 1049: Unknown database root when selecting the datab2.问题解决 cmd 切换本地路径 cd /d D:\Program Files\MySQL\MySQL Server 8.3\bin执行数据库备份命令 …

Linux命令-dpkg-divert命令(Debian Linux中创建并管理一个转向列表)

说明 dpkg-divert命令 是Debian Linux中创建并管理一个转向&#xff08;diversion&#xff09;列表&#xff0c;其使得安装文件的默认位置失效的工具。 语法 dpkg-divert(选项)(参数)选项 --add&#xff1a;添加一个转移文件&#xff1b; --remove&#xff1a;删除一个转移…

Java智慧校园系统源码 微信小程序+电子班牌

Java智慧校园系统源码 微信小程序电子班牌 通过设备管理对百纳智慧校园的智慧班牌以及百纳智慧屏&#xff08;校牌&#xff09;进行统一集中式管理&#xff0c;支持浏览所有设备的基本信息以及在离线状态&#xff0c;支持添加设备、设备一键开关机、一键重启、设置节假日开关机…

Java单链表和LinkedList的实现

一、单链表的实现 无头单向非循环链表 定义异常用于判断所给位置是否合法 public class IndexNotLegal extends RuntimeException{public IndexNotLegal(){}public IndexNotLegal(String smg){super(smg);} } class ListNode中包含当前节点的值和下一个节点指向 实现链表的…