基于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 相关文章推荐
JQuery index()方法使用代码
Jun 02 Javascript
Javascript面向对象扩展库代码分享
Mar 27 Javascript
js函数setTimeout延迟执行的简单介绍
Jul 17 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
Mar 21 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
Oct 06 Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 Javascript
JS实现的表头列头固定页面功能示例
Jan 10 Javascript
微信小程序表单验证错误提示效果
May 19 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
Jul 03 Javascript
详解如何使用webpack打包多页jquery项目
Feb 01 jQuery
echarts大屏字体自适应的方法步骤
Jul 12 Javascript
Vue axios获取token临时令牌封装案例
Sep 11 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
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
php给图片加文字水印
2015/07/31 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
jquery.validate使用详解
2016/06/02 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
vue.js简单配置axios的方法详解
2017/12/13 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
JsonServer安装及启动过程图解
2020/02/28 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
2016/12/18 Python
Python3生成手写体数字方法
2018/01/30 Python
python使用turtle库绘制时钟
2020/03/25 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
初三物理教学反思
2014/01/21 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript