vue中,本地图片路径写到js中,为何渲染不出来?

首先看一个项目

目录结构:

代码如下:

html:

<img src="../../assets/logo.png" alt="">

编译效果:

是不是图片显示出来了,但是如果我的图片路径是写到data里面的,在img上面,绑定一个data的数据,那么是不是图片加载不出来?但是图片的路径还是有的?如下效果:

代码如下:

html:

<img :src="imgUrl" alt="">

<img src="{{ imgUrl }}"/>  //错误写法

<p>{{imgUrl}}</p>

不过,有时候即使使用了正确的语法,依旧无法显示图片,找了好几次代码,依然无法发现错误。原因是你的imgUrl使用了本地图片的路径。

既然找不到,我们去build文件夹下,看目录结构:

是不是说只要把url改成./static/img/logo.png就可以了呢?依然是不行的。打开img文件夹我们可以发现,所有的文件名后都被添加上了一个随机字符串,原始的文件名已经无法对应了。

那么,到底应该怎么加载本地图片呢?回头看vue-cli的文件结构,发现其中有一个叫做static的文件夹,尝试将logo.png放入这个文件夹,然后修改imgUrl:

代码如下:

html:

<img style="width:200px;" :src="imgUrl" alt="">

js:

imgUrl: '../../../static/img/test.jpg'

效果如下:

成功读取到了test.jpg,执行npm run build后查看dist文件,发现test.jpg.原封不动地放在了根目录下。

原来,之前的目录结构是有问题的,图片一类的静态文件,应该放在这个static文件夹下,这个文件夹下的文件(夹)会按照原本的结构放在网站根目录下。这时我们再去使用/static绝对路径,就可以访问这些静态文件了。

### 回答1: 在Vue,您可以在模板使用 v-for 指令遍历数组,并使用对象的 id 属性动态绑定图片的 URL。 示例: ``` <template> <div> <img v-for="item in items" :key="item.id" :src="'path/to/img/' + item.id + '.jpg'" /> </div> </template> <script> export default { data() { return { items: [ { id: 1 }, { id: 2 }, { id: 3 }, // ... ], }; }, }; </script> ``` 在上面的代码,我们将遍历 items 数组并为每个元素渲染一个图像。图像的 URL 将通过拼接字符串计算,其包含了对象的 id 属性。 ### 回答2: 在Vue,我们可以通过使用v-for指令来遍历数组,并根据数组的id来渲染对应的图片。 首先,我们需要在Vue实例的data选项定义一个包含多个对象的数组,其每个对象都包含一个id和一个imgUrl属性,分别表示图片的唯一标识和图片的地址。例如: ```javascript data: { images: [ { id: 1, imgUrl: 'img1.jpg' }, { id: 2, imgUrl: 'img2.jpg' }, { id: 3, imgUrl: 'img3.jpg' } ] } ``` 接下来,在模板使用v-for指令进行渲染,将每个对象的imgUrl属性绑定到img标签的src属性上,并使用对象的id属性作为key属性,以便Vue可以正确地追踪元素的身份。例如: ```html <div v-for="image in images" :key="image.id"> <img :src="image.imgUrl" alt="image"> </div> ``` 通过使用v-for指令和绑定对象的id和imgUrl属性,Vue会自动根据数组的数据来渲染对应的图片。 注意:为了使上述代码能够正常工作,你需要将实际的图片地址替换为对应图片的地址,并确保路径正确。 ### 回答3: 在Vue,我们可以使用v-for指令来遍历一个数组,并根据数组的id来渲染对应的图片。 首先,我们需要在Vue的data选项定义一个数组,该数组包含了多个对象,每个对象都有一个id字段和一个img字段,示例代码如下: ```javascript data() { return { images: [ { id: 1, img: 'image1.jpg' }, { id: 2, img: 'image2.jpg' }, { id: 3, img: 'image3.jpg' }, // 其他图片对象 ] } } ``` 然后,我们可以在模板使用v-for指令来遍历images数组,并通过v-bind指令将id作为key绑定到遍历的元素上,示例代码如下: ```html <template> <div> <div v-for="image in images" :key="image.id"> <img :src="image.img" alt="图片"> </div> </div> </template> ``` 在上述代码,v-for指令会遍历images数组,每次遍历会将当前元素赋值给image变量,然后使用v-bind指令将image.id作为key绑定到遍历的div元素上,这样Vue就能够正确地跟踪每个元素的身份,并在更新数组时进行优化。同时,通过使用:image.img绑定到img标签的src属性上,我们可以根据数组每个对象的img字段的值来渲染对应的图片。 这样,我们就可以根据数组的id渲染对应的图片了。当数组的id发生变化时,Vue会自动更新DOM图片元素和相关属性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值