基于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限制输入字数,并提示剩余字数实现代码
Dec 24 Javascript
JS简单实现元素复制示例附图
Nov 19 Javascript
js动态添加删除,后台取数据(示例代码)
Nov 25 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
Dec 16 Javascript
引用jquery框架后出错的解决方法
Aug 09 Javascript
在Docker快速部署Node.js应用的详细步骤
Sep 02 Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
Nov 09 Javascript
JQueryEasyUI之DataGrid数据显示
Nov 23 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
Dec 25 Javascript
使用ThinkJs搭建微信中控服务的实现方法
Aug 08 Javascript
微信小程序工具函数封装
Oct 28 Javascript
Vue data的数据响应式到底是如何实现的
Feb 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
全国中波电台频率表
2020/03/11 无线电
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
基于jquery循环map功能的代码
2011/02/26 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
vue生命周期的探索
2019/04/03 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
Python中str.format()详解
2017/03/12 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
机械制造专业毕业生求职信
2014/03/02 职场文书
高中生职业规划范文
2014/03/09 职场文书
员工安全生产承诺书
2014/05/22 职场文书
采购内勤岗位职责
2015/04/13 职场文书
jquery插件实现悬浮的菜单
2021/04/24 jQuery
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android