大家好,
想請問我在環境Vite+Vue3中,
如下:
<script setup>
import {ref} from 'vue'
const list = ref([
{
name:'aa',
url: '../assets/imgs/aa.png'
},
{
name:'bb',
url:'../assets/imgs/bb.png'
},
])
</script>
<template>
<div>
<ul>
<li v-for="(item,index) in list" :key="'list'+index">
<img :src="item.url" alt="">
</li>
</ul>
</div>
</template>
在img的src中,代入字串的相對路徑,
結果找不到。
必須使用絕對路徑。
但這樣打包時,就會有問題。
想請問這要怎麼解決呢?
感謝
方法1,在開頭引入
方法2,動態引入
https://stackoverflow.com/questions/66419471/vue-3-vite-dynamic-image-src
<script setup>
import {ref} from 'vue'
// 方法1
import aaURL from '../assets/imgs/aa.png'
const list = ref([
{
name:'aa',
url: aaURL
},
{
name:'bb',
// 方法2
url:'new URL('../assets/imgs/bb.png', import.meta.url).href
},
])
</script>
<template>
<div>
<ul>
<li v-for="(item,index) in list" :key="'list'+index">
<img :src="item.url" alt="">
</li>
</ul>
</div>
</template>
方法二可以寫個簡單的function,這樣你才可以放在template裡重複用
function toURL(relativePath){
return new URL(relativePath, import.meta.url).href
}
或是最無腦的方法三,用絕對路徑改成 /src/assets/imgs/aa.png