基于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 相关文章推荐
JS写的数字拼图小游戏代码[学习参考]
Oct 29 Javascript
JavaScript中的ubound函数使用实例
Nov 04 Javascript
jQuery中prop()方法用法实例
Jan 05 Javascript
jQuery图片轮播插件——前端开发必看
May 31 Javascript
JavaScript浏览器对象之一Window对象详解
Jun 03 Javascript
D3.js实现饼状图的方法详解
Sep 21 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
Mar 01 Javascript
vue-cli创建的项目中的gitHooks原理解析
Feb 14 Javascript
浅谈js中的attributes和Attribute的用法与区别
Jul 16 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
keep-alive保持组件状态的方法
Dec 02 Javascript
JavaScript严格模式不支持八进制的问题讲解
Nov 07 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应用技巧
2008/03/27 PHP
理解PHP中的stdClass类
2014/04/18 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
php正则提取html图片(img)src地址与任意属性的方法
2017/02/08 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
python k-近邻算法实例分享
2014/06/11 Python
Python线程中对join方法的运用的教程
2015/04/09 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
Python基础入门之seed()方法的使用
2015/05/15 Python
Python采用Django开发自己的博客系统
2020/09/29 Python
python3爬虫怎样构建请求header
2018/12/23 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
共产党员岗位承诺书
2014/05/29 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
分居协议书范本
2014/11/03 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
检讨书范文
2015/01/27 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
关于JavaScript回调函数的深入理解
2021/06/27 Javascript
Node与Python 双向通信的实现代码
2021/07/16 Javascript