基于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 Tabs插件宿主IFRAMES
Jan 01 Javascript
利用进制转换压缩数字函数分享
Jan 02 Javascript
JS简单设置下拉选择框默认值的方法
Aug 20 Javascript
ES6新特性八:async函数用法实例详解
Apr 21 Javascript
vue之nextTick全面解析
May 17 Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 Javascript
解决webpack打包速度慢的解决办法汇总
Jul 06 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
Aug 18 Javascript
Vue插件打包与发布的方法示例
Aug 20 Javascript
9102年webpack4搭建vue项目的方法步骤
Feb 20 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
Aug 05 Javascript
微信小程序实现打卡签到页面
Sep 21 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分页集合包括使用方法
2013/10/21 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
javascript如何创建对象
2016/08/29 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
python集合类型用法分析
2015/04/08 Python
Python网站验证码识别
2016/01/25 Python
Python中static相关知识小结
2018/01/02 Python
python 实现视频 图像帧提取
2019/12/10 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
Kneipp克奈圃美国官网:德国百年精油配方的传承
2018/02/07 全球购物
高分子材料与工程专业个人求职信
2013/12/15 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
2014年党课学习材料
2014/05/11 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android