前端开发攻略---三种方法解决Vue3图片动态引入问题

目录

 1、将图片放入public文件夹中

 2、使用 /src/.... 路径开头

 3、生成图片的完整URL地址(推荐)


 1、将图片放入public文件夹中

使用图片:路径为 '/public'  开头

<template>
  <div>
    <img :src="`/public/${flag ? '01' : '02'}.jpg`" alt="" />
    <button @click="flag = !flag">动态切换图片</button>
  </div>

</template>

<script setup>
import { ref, reactive } from 'vue'
const flag = ref(false)
</script>

<style scoped>
img {
  width: 500px;
  height: 500px;
  vertical-align: middle;
}
button {
  width: 100px;
  height: 50px;
}
</style>

2、使用 /src/.... 路径开头

图片位置位于 src 目录下

可以使用  '/src/...'  动态引入图片

<template>
  <div>
    <img :src="`/src/assets/images/${flag ? '01' : '02'}.jpg`" alt="" />
    <button @click="flag = !flag">动态切换图片</button>
  </div>
</template>

<script setup>
import { ref, reactive } from 'vue'
const flag = ref(false)
</script>

<style scoped>
img {
  width: 500px;
  height: 500px;
  vertical-align: middle;
}
button {
  width: 100px;
  height: 50px;
}
</style>

致命问题:使用这种方式本地看起来很正常,但是部署到生产环境图片就加载不出了,因为打包后路径出现了问题

 3、生成图片的完整URL地址(推荐)

图片位置位于 src 目录下

通过手写 getImageUrl函数 动态生成图片URL地址

<template>
  <div>
    <img :src="getImageUrl(flag ? '01.jpg' : '02.jpg')" alt="" />
    <button @click="flag = !flag">动态切换图片</button>
  </div>
</template>

<script setup>
import { ref, reactive } from 'vue'
const flag = ref(false)

function getImageUrl(url) {
  const path = new URL(`./assets/images/${url}`, import.meta.url)
  return path.href
}
</script>

<style scoped>
img {
  width: 500px;
  height: 500px;
  vertical-align: middle;
}
button {
  width: 100px;
  height: 50px;
}
</style>

注意:getImageUrl函数中使用的地址是相对位置的地址

该函数位于 App.vue 文件中  所以 getImageUrl函数 中的地址是 ./assets/....

当该函数所处的文件地址变化时,找图片的地址也要相对发生变化

解释一下getImageUrl函数中代码的作用和意思

作用:

这个函数是用来获取图片的 URL 地址的。它接受一个参数 url,然后使用 new URL() 构造函数创建一个新的 URL 对象,其中包含了 ./assets/images/ 目录下的图片路径。在这个路径中,url 参数用于指定具体的图片文件名或路径。最后,通过 path.href 返回完整的 URL 地址。

意思:

1、new URL() 构造函数创建了一个新的 URL 对象。

2、这个 URL 对象的第一个参数是一个字符串,表示相对路径 ./assets/images/,这里假设这是图片文件存放的目录。

3、第二个参数 import.meta.url 是 Node.js 中的一个特殊变量,它指向当前模块文件的 URL 地址。

4、函数将传入的 url 参数附加到 ./assets/images/ 路径后面,得到了完整的图片路径。

5、最后,通过 path.href 返回这个完整的图片 URL 地址。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bbamx.

谢谢您

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值