前端之家收集整理的这篇文章主要介绍了
Vue中img的src属性绑定与static文件夹实例,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_0@不少人在vue的开发中遇到这样一个问题: img的src属性绑定url变量,然而图片加载失败。
@H_
301_0@大部分的情况中,是开发者使用了
错误的写法,例如:
@H_
301_0@这样写肯定是不对的,正确的写法应该使用v-bind:
@H_
301_0@不过,有时候即使使用了正确的语法,依旧无法
显示图片,因为你的imgUrl使用了本地
图片的路径。
@H_
301_0@例如,有下面一个
文件结构:
@H_
301_0@现在,我们要在App.vue里使用位于src/assets/目录下的
logo.png
图片,于是,我们设:
@H_
301_0@奇怪的事情出现了,
图片加载失败。查看网页源
代码,发现一个
错误:
@H_
301_0@

@H_
301_0@看这个
错误代码,我们发现,网页把根域名作为相对路径的根目录了,然而我们
文件的路径是相对于项目
文件的根目录的,当然就找不到了。
@H_
301_0@既然这样,那我们去找build后的dist
文件夹。发现
文件的结构是这样:
@H_
301_0@

@H_
301_0@是不是说只要把url改成./static/img/
logo.png就可以了呢?依然是不行的。打开img
文件夹我们可以发现,所有的
文件名后都被
添加上了一个
随机字符串,原始的
文件名已经无法对应了。
@H_
301_0@那么,到底应该怎么加载本地
图片呢?回头看vue-cli的
文件结构,发现其中有一个叫做static的
文件夹,尝试将
logo.png放入这个
文件夹,然后
修改imgUrl:
@H_
301_0@成功读取到了
logo.png. 执行npm run build后查看dist
文件,发现
logo.png原封不动地放在了根目录下。
@H_
301_0@原来,之前的目录结构是有问题的,
图片一类的
静态文件,应该放在这个static
文件夹下,这个
文件夹下的
文件(夹)会按照原本的结构放在网站根目录下。这时我们再去使用/static
绝对路径,就可以访问这些
静态文件了。
@H_
301_0@另外,如果说想在不调整目录结构的情况下读取本地
图片,还有一个
方法,那就是直接传入
图片编码。即:
logo.png')
@H_
301_0@这样可以读到项目路径下的
图片,但是要注意,因为CommonJS只允许使用字符串字面量,所以这种
方法的灵活性依旧很差,所以还是推荐将
静态文件放入static
文件夹下。
@H_
301_0@以上就是本文的全部
内容,希望对大家的学习有所帮助,也希望大家多多
支持编程之家。