基于webpack的项目,动态添加图片

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/latency_cheng/article/details/80395586

有些时候,有的图片没办法在html中直接写好,比如有10张图片,名字分别为 rank1.png、rank2.png......rank10.png,我们希望可以在一个循环中把它们添加进来,而不是手动写10次。

基本思路是下面这样:

<li class="list-item" v-for="(item, index) in rankList" :key="item.id">
    <img :src="'../imgs/rank' + (index+1) + '.png'">
    <!--......-->
</li>

但是由于webpack在静态编译阶段就已经将图片打包了,上面这时样的写法使得图片路径在项目运行时才拼接完毕,会导致图片404。或者在js中添加的图片也会有这种问题。

为了解决这个问题,有两种方法:
1、把图片上传到服务器,直接用线上路径
2、可以用import或者require导入图片

import和require的区别在于,import必须写在代码开头,如果有10张图片,就要import10次;而require可以写在代码块中,用循环来完成图片引入。

<template>
<!--......-->
<li class="list-item" v-for="(item, index) in rankList" :key="item.id">
    <img :src="imgUrlList[index]">
    <!--......-->
</li>
<!--......-->
</template>
<script>
var imgList = []
    for (let i = 0; i < 3; i++) {
    imgList.push(require('../imgs/rank' + (i + 1) + '.png'))
}
export default {
    data() {
        return {
            rankList: [
                {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}
            ],
            imgUrlList: imgList
        }
    }
}
</script>




猜你喜欢

转载自blog.csdn.net/latency_cheng/article/details/80395586