基于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 function定义函数使用心得
Apr 15 Javascript
通过jQuery源码学习javascript(三)
Dec 27 Javascript
jQuery中阻止冒泡事件的方法介绍
Apr 12 Javascript
jquery ztree实现下拉树形框使用到了json数据
May 14 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
May 16 Javascript
用户代理字符串userAgent可实现的四个识别
Sep 20 Javascript
动态加载css方法实现和深入解析
Jan 18 Javascript
详解webpack多页面配置记录
Jan 22 Javascript
Node.js Stream ondata触发时机与顺序的探索
Mar 08 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
Nov 24 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
May 03 Javascript
vue实现防抖的实例代码
Jan 11 Vue.js
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实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
利用python画出AUC曲线的实例
2020/02/28 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
python suds访问webservice服务实现
2020/06/26 Python
python操作toml文件的示例代码
2020/11/27 Python
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
中考冲刺决心书
2014/03/11 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
英文产品推荐信
2015/03/27 职场文书
同事欢送会致辞
2015/07/31 职场文书
js作用域及作用域链工作引擎
2022/07/07 Javascript