基于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 相关文章推荐
在JavaScript中实现命名空间
Nov 23 Javascript
初识angular框架后的所思所想
Feb 19 Javascript
Bootstrap表格和栅格分页实例详解
May 20 Javascript
jQuery实现获取h1-h6标题元素值的方法
Mar 06 Javascript
div中文字内容溢出常见的解决方法
Mar 16 Javascript
详解Vue.js Mixins 混入使用
Sep 15 Javascript
node.js中http模块和url模块的简单介绍
Oct 06 Javascript
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
React styled-components设置组件属性的方法
Aug 07 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
基于jQuery实现可编辑的表格
Dec 11 jQuery
jQuery擦除插件eraser使用方法详解
Jan 11 jQuery
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代码
2012/09/14 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
使用jquery实现IE下按backspace相当于返回操作
2014/03/18 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
js实现微信分享代码
2020/10/11 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
jQuery EasyUI封装简化操作
2016/09/18 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
Python中的filter()函数的用法
2015/04/27 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
python argparse传入布尔参数false不生效的解决
2020/04/20 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
工作人员思想汇报
2014/01/09 职场文书
学生爱国演讲稿
2014/01/14 职场文书
我的五年职业生涯规划
2014/01/23 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书