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 相关文章推荐
用户注册常用javascript代码
Aug 29 Javascript
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 Javascript
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
May 03 Javascript
使用js对select动态添加和删除OPTION示例代码
Aug 12 Javascript
javascript + jquery实现定时修改文章标题
Mar 19 Javascript
详解JavaScript中shift()方法的使用
Jun 09 Javascript
jQuery实现简单下拉导航效果
Sep 07 Javascript
微信小程序 引用其他js文件实现代码
Feb 22 Javascript
详解在 Angular 项目中添加 clean-blog 模板
Jul 04 Javascript
JavaScript编写的网页小游戏,很给力
Aug 18 Javascript
react-router4按需加载(踩坑填坑)
Jan 06 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
MVC模式的PHP实现
2006/10/09 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
JS自调用匿名函数具体实现
2014/02/11 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
利用Python破解斗地主残局详解
2017/06/30 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
汽车维修工岗位职责
2014/02/12 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
大学学生会辞职信
2015/05/13 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python