首先看一个项目
目录结构:
代码如下:
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绝对路径,就可以访问这些静态文件了。