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 Tabs插件宿主IFRAMES
Jan 01 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
May 08 Javascript
JavaScript深度复制(deep clone)的实现方法
Feb 19 Javascript
获取input标签的所有属性的方法
Jun 28 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
Dec 30 Javascript
Bootstrap模态框案例解析
Mar 05 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
Mar 27 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
Feb 18 Javascript
vue 移动端注入骨架屏的配置方法
Jun 25 Javascript
vue中的过滤器及其时间格式化问题
Apr 09 Javascript
原生JS利用transform实现banner的无限滚动示例代码
Jun 15 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
Nov 13 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
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
PHP实现图片简单上传
2006/10/09 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
JS简单实现登陆验证附效果图
2013/11/19 Javascript
解释&amp;&amp;和||在javascript中的另类用法
2014/07/28 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
python实现基本进制转换的方法
2015/07/11 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
python实现图像拼接
2020/03/05 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
编写python代码实现简单抽奖器
2020/10/20 Python
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
学习方法演讲稿
2014/05/10 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
李强感恩观后感
2015/06/17 职场文书
离职信范文
2015/06/23 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python