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 相关文章推荐
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
Nov 05 Javascript
解决jquery插件冲突的问题
Jan 23 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
Aug 07 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
jQuery设置Easyui校验规则(推荐)
Nov 21 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
js实现的xml对象转json功能示例
Dec 24 Javascript
Javascript中 toFixed四舍六入方法
Aug 21 Javascript
js阻止默认右键的下拉菜单方法
Jan 02 Javascript
vue.js指令v-for使用以及下标索引的获取
Jan 31 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
Aug 20 Javascript
jquery自定义组件实例详解
Dec 31 jQuery
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
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
php获取post中的json数据的实现方法
2011/06/08 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
利用python汇总统计多张Excel
2020/09/22 Python
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
总经理办公室主任岗位职责
2013/11/12 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
银行实习生的自我评价
2014/01/13 职场文书
保密承诺书
2014/03/27 职场文书
交通志愿者活动总结
2014/06/27 职场文书
商务经理岗位职责
2014/07/30 职场文书
年检委托书
2014/08/30 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server