Vue中的元素属性绑定使用v-bind:attr 如下我们来绑定一个img元素的src属性:
<img v-bind:src="Url"/>
Url = './assets/logo.png'
按道理此时图片应该正常加载才对,但奇怪的事情出现了,图片加载失败。查看网页源代码,发现一个错误:
![Vue中img的src属性绑定问题 Vue中img的src属性绑定问题](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9MeTkxY0d4dllXUXRhVzFoWjJWekxtcHBZVzV6YUhVdWFXOHZkWEJzYjJGa1gybHRZV2RsY3k4eU1qQTBNalk1TFRVd1pUUXlaRFF5WW1KbU16VXhPV1l1Y0c1blAybHRZV2RsVFc5bmNqSXZZWFYwYnkxdmNtbGxiblF2YzNSeWFYQWxOME5wYldGblpWWnBaWGN5THpJdmR5OHhNalF3.jpg?w=700&webp=1)
我们可以看到此时img的路径将网站根域名作为了相对路径的根目录,此时路径错误,图片无法加载。
至于原因,是因为Vue代码通过构建工具打包后,文件的路径会发生变化
解决方法:
根据vue-cli的文件结构,其中有一个叫做static的文件夹,将logo.png放入这个文件夹,然后修改Url:
Url = '/static/logo.png'
图片成功加载. 执行npm run build后查看dist文件,可以看到有logo.png文件。
总结:图片一类的静态文件,应该放在这个static文件夹下,这个文件夹下的文件(夹)会按照原本的结构放在网站根目录下。这时我们再去使用/static
绝对路径,就可以访问这些静态文件了。