1、具体情况
将图片放在src/assets/img文件夹下面,循环图片的话,图片显示不出来
就像下面这样,图片是显示不出来的
<template>
<div v-for="img_url of images">
<img :src="img_url">
</div>
</template>
<script>
export default {
data(){
return{
images:['@/assets/img/kefu.png','@/assets/img/yuyue.png']
}
}
}
</script>
但是如果直接在<img/>标签上面将src定义为'@/assets/img/kefu.png'就可以显示出来,就像下面代码这样
<template>
<img src="@/assets/img/kefu.png">
</template>
2、解决方案
(1)解决方案一
用require将src包裹起来,如下
images:[require('@/assets/img/kefu.png'),require('@/assets/img/yuyue.png')]
这样再循环图片就可以显示了
(2)解决方案二
如果不想在data中将图片路径写死,而是想放在json文件或者数据库中加载,上面这种方法就不合适了
就得看为什么本来图片加载不出来,用require将路径包裹起来才可以加载图片
因为在vue项目中,唯一可以外部访问的文件是static文件夹,src文件夹是不可以通过外部访问的,只能我们内部代码调用。
如果图片不是放在static文件夹下面,那么系统会先做一步编译工作,将图片编译成static文件夹的路径,图片才可以显示出来

这个路径我们在data中定义的是require('@/assets/img/kefu.png'),在这里被编译成了/static/img/kefu.8f8acce.png
我们直接将图片放在static文件夹下面,就不需要这部分的编译工作了

放在static文件夹之后,不需要require引用图片路径,图片也可以加载出来
<template>
<div v-for="img_url of images">
<img :src="img_url">
</div>
</template>
<script>
export default {
data(){
return{
//将图片放在了static路径下面
images:['/static/img/kefu.png','/static/img/yuyue.png']
}
}
}
</script>
本文探讨了在Vue项目中,图片放置于src/assets/img文件夹下时,使用v-for循环无法正常显示的问题。分析了原因在于src文件夹的图片需要经过编译转换为static路径才能正确加载,并提供了两种解决方案:一是使用require包裹图片路径;二是将图片置于static文件夹下,直接引用路径。
8497

被折叠的 条评论
为什么被折叠?



