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

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

方法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,并且路径正确使用绝对路径在开发环境能够正常显示,但将导致打包后的路径不正确

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [Zer0pts2020]Can you guess it?1
  • python | 字符串编码问题怎么破
  • 在Ubuntu 14.04上安装LAMP【快速入门】
  • Spring Boot发送邮件带附件功能怎么实现?
  • Vim多文件操作
  • 我叫:堆排序【JAVA】
  • 动手学深度学习7.6 残差网络(ResNet)-笔记练习(PyTorch)
  • 【MySQL】数据库约束和多表查询
  • 数学基础 -- 函数的平均值定理与定积分的中值定理
  • Redis合集 第二章 redis客户端 第一节 jedis
  • 点燃体育赛场新火花,IM与AI共启赛场新范式!
  • BGP实验
  • 基于linux下的mplayer播放器项目
  • 使用webpack搭建个本地项目
  • 版本更新 《坚持学习计时器》软件V3.2更新内容:增加删除指定数据的功能
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 2017届校招提前批面试回顾
  • C++入门教程(10):for 语句
  • centos安装java运行环境jdk+tomcat
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript类型识别
  • Laravel 实践之路: 数据库迁移与数据填充
  • log4j2输出到kafka
  • React+TypeScript入门
  • vue数据传递--我有特殊的实现技巧
  • 闭包--闭包之tab栏切换(四)
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 码农张的Bug人生 - 初来乍到
  • 少走弯路,给Java 1~5 年程序员的建议
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 自定义函数
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 【云吞铺子】性能抖动剖析(二)
  • 带你开发类似Pokemon Go的AR游戏
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (03)光刻——半导体电路的绘制
  • (27)4.8 习题课
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (ros//EnvironmentVariables)ros环境变量
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (小白学Java)Java简介和基本配置
  • (一)为什么要选择C++
  • (转)重识new
  • (自用)交互协议设计——protobuf序列化
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET 设计模式初探
  • .net解析传过来的xml_DOM4J解析XML文件