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

时间:2024-05-22 08:20:26

首先看一个项目

目录结构:

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

代码如下:

html:

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

编译效果:

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

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

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

代码如下:

html:

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

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

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

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

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

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

是不是说只要把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'

效果如下:

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

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

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