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判断元素是否隐藏的多种方法
May 06 Javascript
JavaScript实现动态添加,删除行的方法实例详解
Jul 02 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
Sep 26 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
浅析script标签中的defer与async属性
Nov 30 Javascript
ES6新特性三: Generator(生成器)函数详解
Apr 21 Javascript
Angular.js中上传指令ng-upload的基本使用教程
Jul 30 Javascript
Nginx 配置多站点vhost 的方法
Jan 07 Javascript
web前端vue filter 过滤器
Jan 12 Javascript
RxJS在TypeScript中的简单使用详解
Apr 13 Javascript
JS代码简洁方式之函数方法详解
Jul 28 Javascript
Vue为什么要谨慎使用$attrs与$listeners
Aug 27 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
如何过滤高亮显示非法字符
2006/10/09 PHP
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
ucenter通信原理分析
2015/01/09 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
node网页分段渲染详解
2016/09/05 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
用Python生成器实现微线程编程的教程
2015/04/13 Python
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
python魔法方法-自定义序列详解
2016/07/21 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
利用nohup来开启python文件的方法
2019/01/14 Python
使用pip安装python库的多种方式
2019/07/31 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
Python3读写ini配置文件的示例
2020/11/06 Python
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
某公司部分笔试题
2013/11/05 面试题
毕业生如何写自荐信
2014/03/26 职场文书
中学生励志演讲稿
2014/04/26 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
干部培训工作总结2015
2015/05/25 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL