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批量设置属性readonly和disabled的方法
Jan 24 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
Aug 24 Javascript
js和jquery分别验证单选框、复选框、下拉框
Dec 17 Javascript
jQuery表格的维护和删除操作
Feb 03 Javascript
js仿淘宝评价评分功能
Feb 28 Javascript
jQuery获取table下某一行某一列的值实现代码
Apr 07 jQuery
webpack配置的最佳实践分享
Apr 21 Javascript
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
JS函数内部属性之arguments和this实例解析
Oct 07 Javascript
vue使用Google地图的实现示例代码
Dec 19 Javascript
Vue element-ui父组件控制子组件的表单校验操作
Jul 17 Javascript
Vue 实例中使用$refs的注意事项
Jan 29 Vue.js
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/07/18 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
Node.js实现文件上传的示例
2017/06/28 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
js代码实现轮播图
2020/05/04 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
初步理解Python进程的信号通讯
2015/04/09 Python
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
写好自荐信的几个要点
2013/12/26 职场文书
车贷收入证明范本
2014/01/09 职场文书
美德好少年主要事迹
2014/01/29 职场文书
党员一句话承诺大全
2014/03/28 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python