v-for循环无法正常加载相对路径的图片

223 阅读1分钟

在使用v-for循环生成图片,且图片的路径是相对路径时,直接将其放在数组中会使得图片无法正常显示,相对路径无法正常解析。

解决方案

一、require

给每一个相对路径加上require,使得vue能够正确解析相对路径资源

<template>
    <div>
        <div v-for="item in list">
            <img :src="item" alt="">
        </div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            list: [
                require('../assets/1.jpg'),
                require('../assets/2.jpg'),
                require('../assets/3.jpg'),
                require('../assets/4.jpg')
            ]
        }
    }
}
</script>

<style lang="less" scoped></style>

二、new URL

使用new URL字段并且带上import.meta.url,使得编译器能够解析相对路径地址

<template>
    <div>
        <div v-for="item in list">
            <img :src="item" alt="">
        </div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            list: [
                new URL("../assets/1.jpg", import.meta.url),
                new URL("../assets/2.jpg", import.meta.url),
                new URL("../assets/3.jpg", import.meta.url),
                new URL("../assets/4.jpg", import.meta.url),
                new URL("../assets/5.jpg", import.meta.url),
            ]
        }
    }
}
</script>

<style lang="less" scoped></style>

这两种方法在选项式api和组合式api中都能使用。