基于vue 动态加载图片src的解决方法


Posted in Javascript onFebruary 05, 2018

好久没更博了,最近也不知道在忙啥,反正就是感觉挺忙的,在群里看到陆陆续续有刚入vue小伙伴问vue动态加载图片总是404的状况,这篇就简单的说明为什么会出现以及解决办法有哪些。

首先先说明下vue-cli的assets和static的两个文件的区别,因为这对你理解后面的解决办法会有所帮助

assets:在项目编译的过程中会被webpack处理解析为模块依赖,只支持相对路径的形式,如< img src=”./logo.png”>和background:url(./logo.png),”./logo.png”是相对资源路径,将有webpack解析为模块依赖

static:在这个目录下文件不会被webpack处理,简单就是说存放第三方文件的地方,不会被webpack解析。他会直接被复制到最终的打包目录(默认是dist/static)下。必须使用绝对路径引用这些文件,这是通过config.js文件中的build.assetsPublic和build.assertsSubDirectory链接来确定的。任何放在static/中文件需要以绝对路径的形式引用:/static[filename]

根据webpack的特性,总的来说就是static放不会变动的,第三档的文件,asserts放可能会变动的文件

问题来了,用js动态加载assets或者本文件的图片出现404的状态码

代码实例

<li v-for="(item,index) in images" :key="index">
<img :src="item.src"></li>
//js部分
data(){
 return {
 images:[{src:'./1.png'},{./2.png}]
 }
}

跑起来发现图片不显示,错误码为404,

原因:在webpack中会将图片图片来当做模块来用,因为是动态加载的,所以url-loader将无法解析图片地址,然后npm run dev 或者npm run build之后导致路径没有被加工【被webpack解析到的路径都会被解析为/static/img/[filename].png,完整地址为localhost:8080/static/img/[filename].png】

解决办法:

将图片作为模块加载进去,比如images:[{src:require(‘./1.png')},{src:require(‘./2.png')}]这样webpack就能将其解析。

②将图片放到static目录下,但必须写成绝对路径如images:[{src:”/static/1.png”},{src:”/static/2.png”}]这样图片也会显示出来,当然你也可以通过在webpack.base.config.js定义来缩短路径的书写长度。

当然你说当本地图片太多时,这样写岂不是很麻烦,那么其实我们是一这样简化操作的。

第一步:在static里面新建一个json文件夹

基于vue 动态加载图片src的解决方法

第二部:填写json文件,如图

基于vue 动态加载图片src的解决方法

第三部:将json引入响应的vue文件中,解析引用就行了

基于vue 动态加载图片src的解决方法

如有疑问,欢迎进行讨论。

以上这篇基于vue 动态加载图片src的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Html中JS脚本执行顺序简单举例说明
Jun 19 Javascript
JS定时器实例
Apr 17 Javascript
Node.js中使用socket创建私聊和公聊聊天室
Nov 19 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
Dec 10 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
javascript 判断一个对象为数组的方法
May 03 Javascript
ES6模块化的import和export用法方法总结
Aug 08 Javascript
form表单序列化详解(推荐)
Aug 15 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
Nov 28 Javascript
Angular 组件之间的交互的示例代码
Mar 24 Javascript
javascript关于“时间”的一次探索
Jul 24 Javascript
vue调用本地摄像头实现拍照功能
Aug 14 Javascript
vue2.0 datepicker使用方法
Feb 04 #Javascript
js数组常用最重要的方法
Feb 04 #Javascript
jQuery Dom元素操作技巧
Feb 04 #jQuery
Vue的事件响应式进度条组件实例详解
Feb 04 #Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
Feb 04 #Javascript
Vue的土著指令和自定义指令实例详解
Feb 04 #Javascript
彻底理解js面向对象之继承
Feb 04 #Javascript
You might like
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
PHP 编程安全性小结
2010/01/08 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python实现代理服务功能实例
2013/11/15 Python
Saltstack快速入门简单汇总
2016/03/01 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
python语音识别实践之百度语音API
2018/08/30 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
工作失误检讨书范文大全
2014/01/13 职场文书
生日宴会主持词
2014/03/20 职场文书
开业庆典主持词
2014/03/21 职场文书
实践单位评语
2014/04/26 职场文书
家长会欢迎标语
2014/06/24 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
python实现自动化群控的步骤
2021/04/11 Python