目录

 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 地址。

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐