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

vue3动态引入图片(:src)

vite 官方默认的配置,如果资源文件在assets文件夹打包后会把图片名加上 hash值,但是直接通过 :src="imgSrc"方式引入并不会在打包的时候解析,导致开发环境可以正常引入,打包后却不能显示的问题
在这里插入图片描述

实际上我们不希望资源文件被wbpack编译可以把图片放到public 目录会更省事,不管是开发环境还是生产环境,可以始终以根目录保持图片路径的一致,这点跟webpack是一致的
image.png

看到这里,也许问题就解决了,如果在vite确实需要将静态文件放在assets,我们再往下看:
这里我们先假设:
静态文件目录:src/assets/images/
我们的目标静态文件在 src/assets/images/home/home_icon.png

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

尝试过require动态引入, 发现报错:require is not defind,这是因为 require 是属于 Webpack 的方法

第一种方式(适用于处理单个链接的资源文件)

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

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

静态资源处理 | 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/home_icon.png')" />
http://www.lryc.cn/news/211325.html

相关文章:

  • Android-登录注册页面(第三次作业)
  • [论文精读]How Powerful are Graph Neural Networks?
  • Redis实现分布式锁之----超时和失效(非原子性)问题----解决方案
  • Android使用Hilt依赖注入,让人看不懂你代码
  • ZYNQ连载01-ZYNQ介绍
  • 第十节——Vue组件
  • Redis(01)| 数据结构
  • SpringBoot工程启动时自动创建数据库、数据表
  • Uni-app智慧工地可视化信息平台源码
  • 计算机网络重点概念整理-第五章 传输层【期末复习|考研复习】
  • Java毕业设计 SpringBoot 新能源充电桩管理系统
  • JNI接口
  • 国内好用的免费ai软件
  • MAC缓解WebUI提示词反推
  • 【设计模式之原型模式 】– C++
  • Flask路由机制分析之二
  • vue中如何获取当时时间时分秒
  • matlab simulink 直线一级倒立摆控制(自起摆和稳态控制)
  • Transformers实战(二)快速入门文本相似度、检索式对话机器人
  • 【错误解决方案】ModuleNotFoundError: No module named ‘PeptideBuilder‘
  • 汇编学习(1)
  • C#,数值计算——分类与推理Svmlinkernel的计算方法与源程序
  • 【鸿蒙软件开发】ArkTS容器组件之Badge
  • H5游戏源码分享-命悬一线
  • 【电路笔记】-交流电阻和阻抗
  • android开发使用OkHttp自带的WebSocket实现IM功能
  • 前端小技巧: TS实现柯里化函数
  • 【算法-数组2】有序数组的平方 和 长度最小的子数组
  • H5游戏源码分享-接苹果游戏拼手速
  • 详解类生到死的来龙去脉