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 相关文章推荐
JavaScript 获得选中文本内容的方法
Feb 15 Javascript
该如何加载google-analytics(或其他第三方)的JS
May 13 Javascript
jQuery 表单验证扩展(三)
Oct 20 Javascript
jQuery+css实现百度百科的页面导航效果
Dec 16 Javascript
html的DOM中document对象forms集合用法实例
Jan 21 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
Sep 11 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
Sep 10 Javascript
基于DOM节点删除之empty和remove的区别(详解)
Sep 11 Javascript
vue滚动轴插件better-scroll使用详解
Oct 17 Javascript
基于Node.js实现压缩和解压缩的方法
Feb 13 Javascript
webpack4 处理CSS的方法示例
Sep 03 Javascript
js删除指定位置超链接中含有百度与360的标题
Jan 06 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
浅析js预加载/延迟加载
2014/09/25 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
vue后台管理之动态加载路由的方法
2018/08/13 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
2020/01/02 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
开源Web应用框架Django图文教程
2017/03/09 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
药学职务聘任书
2014/03/29 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
董事长助理岗位职责
2015/02/11 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
工作简报范文
2015/07/21 职场文书
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL