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的ajax基础上的超强GridView展示
Sep 18 Javascript
js左侧多级菜单动态的解决方案
Feb 01 Javascript
js 数组的for循环到底应该怎么写?
May 31 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
Jun 20 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
Oct 06 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
Oct 09 Javascript
JS小数转换为整数的方法分析
Jan 07 Javascript
react-router4 嵌套路由的使用方法
Jul 24 Javascript
JS 数组随机洗牌的实例代码
Sep 12 Javascript
vue 获取视频时长的实例代码
Aug 20 Javascript
js编写简易的计算器
Jul 29 Javascript
js 将多个对象合并成一个对象 assign方法的实现
Sep 24 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
php中的一个中文字符串截取函数
2007/02/14 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
javascript中检测变量的类型的代码
2010/12/28 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
2016/11/17 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
python分数表示方式和写法
2019/06/26 Python
wxPython色环电阻计算器
2019/11/18 Python
Django更新models数据库结构步骤
2020/04/01 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
大学生农村教师实习自我鉴定
2013/09/21 职场文书
日语专业个人求职信范文
2014/02/02 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
收款委托书范本
2014/09/11 职场文书
红色电影观后感
2015/06/18 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
工程主管竞聘书
2015/09/15 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL
MySQL慢查询优化解决问题
2022/03/17 MySQL