Vue中img的src属性绑定与static文件夹实例


Posted in Javascript onMay 18, 2017

不少人在vue的开发中遇到这样一个问题: img的src属性绑定url变量,然而图片加载失败。

大部分的情况中,是开发者使用了错误的写法,例如:

<img src="{{ imgUrl }}"/>

这样写肯定是不对的,正确的写法应该使用v-bind:

<img v-bind:src="imgUrl"/>

不过,有时候即使使用了正确的语法,依旧无法显示图片,因为你的imgUrl使用了本地图片的路径。

例如,有下面一个文件结构:

Vue中img的src属性绑定与static文件夹实例

现在,我们要在App.vue里使用位于src/assets/目录下的logo.png图片,于是,我们设:

imgUrl = './assets/logo.png'

奇怪的事情出现了,图片加载失败。查看网页源代码,发现一个错误:

Vue中img的src属性绑定与static文件夹实例

看这个错误代码,我们发现,网页把根域名作为相对路径的根目录了,然而我们文件的路径是相对于项目文件的根目录的,当然就找不到了。

既然这样,那我们去找build后的dist文件夹。发现文件的结构是这样:

Vue中img的src属性绑定与static文件夹实例

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

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

imgUrl = '/static/logo.png'

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

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

另外,如果说想在不调整目录结构的情况下读取本地图片,还有一个方法,那就是直接传入图片编码。即:

imgUrl = require('./assets/logo.png')

这样可以读到项目路径下的图片,但是要注意,因为CommonJS只允许使用字符串字面量,所以这种方法的灵活性依旧很差,所以还是推荐将静态文件放入static文件夹下。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery AjaxQueue改进步骤
Oct 06 Javascript
gridpanel动态加载数据的实例代码
Jul 18 Javascript
Jquery插件分享之气泡形提示控件grumble.js
May 20 Javascript
js制作简易年历完整实例
Jan 28 Javascript
JS设置下拉列表框当前所选值的方法
Dec 22 Javascript
javascript实现表单验证
Jan 29 Javascript
JS敏感词过滤代码
Dec 23 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
Feb 28 Javascript
Bootstrap栅格系统简单实现代码
Mar 06 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
Vue项目数据动态过滤实践及实现思路
Sep 11 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
Nov 13 Javascript
JS验证全角与半角及相互转化的介绍
May 18 #Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 #Javascript
Javascript实现倒计时时差效果
May 18 #Javascript
vue-cli webpack 开发环境跨域详解
May 18 #Javascript
JavaScript实现简单的星星评分效果
May 18 #Javascript
Javascript循环删除数组中元素的几种方法示例
May 18 #Javascript
Javascript实现信息滚动效果
May 18 #Javascript
You might like
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
PHP数组实例总结与说明
2011/08/23 PHP
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
php常用数组函数实例小结
2016/12/29 PHP
js传值 判断
2006/10/26 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
简单明了区分escape、encodeURI和encodeURIComponent
2018/05/26 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
Python的Flask框架中web表单的教程
2015/04/20 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
会计专业自荐信
2013/12/02 职场文书
大学生就业求职信
2014/06/12 职场文书
雨花台导游词
2015/02/06 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js