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 支持链式调用的异步调用框架Async.Operation
Aug 04 Javascript
一些常用且实用的原生JavaScript函数
Sep 08 Javascript
Javascript学习笔记 delete运算符
Sep 13 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
jQuery页面加载初始化的3种方法(推荐)
Jun 02 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
Mar 24 jQuery
150行代码带你实现微信小程序中的数据侦听
May 17 Javascript
JavaScript内置对象math,global功能与用法实例分析
Jun 10 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
Apr 20 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
Sep 22 Javascript
Vue2.0搭建脚手架
Mar 13 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函数(简单整理)
2010/04/30 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
Java中final关键字详解
2015/08/10 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
jQuery数组处理方法汇总
2011/06/20 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
python数组过滤实现方法
2015/07/27 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
python的命名规则知识点总结
2019/10/04 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
店长岗位职责
2013/11/21 职场文书
营销计划书范文
2015/01/17 职场文书
单身证明范本
2015/06/15 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫