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 相关文章推荐
你的编程语言可以这样做吗?
Sep 07 Javascript
JavaScript DOM学习第一章 W3C DOM简介
Feb 19 Javascript
javascript学习笔记(九) js对象 设计模式
Jun 19 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
Jan 08 Javascript
JavaScript中Date.toSource()方法的使用教程
Jun 12 Javascript
js去字符串前后空格的实现方法
Feb 26 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
Aug 10 Javascript
深入理解(function(){... })();
Aug 16 Javascript
让编辑器支持word复制黏贴、截屏的js代码
Oct 17 Javascript
Ext JS 实现建议词模糊动态搜索功能
May 13 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
Dec 16 Javascript
原生JS实现无缝轮播图片
Jun 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根据用户语言跳转相应网页
2015/11/04 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
Python手机号码归属地查询代码
2016/05/04 Python
Python模块包中__init__.py文件功能分析
2016/06/14 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
python3中编码获取网页的实例方法
2020/11/16 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
财务管理专业自荐书
2014/09/02 职场文书
校车司机安全责任书
2015/05/11 职场文书
党支部评议意见
2015/06/02 职场文书
用Python实现屏幕截图详解
2022/01/22 Python
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript