基于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之软键盘实现(js源码)
Jan 30 Javascript
javascript parseInt与Number函数的区别
Jan 21 Javascript
javascript 学习笔记(一)DOM基本操作
Apr 08 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
Oct 29 Javascript
从数组中随机取x条不重复数据的JS代码
Dec 24 Javascript
JS中Date日期函数中的参数使用介绍
Jan 02 Javascript
对Jquery中的ajax再封装,简化操作示例
Feb 12 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
100多个基础常用JS函数和语法集合大全
Feb 16 Javascript
js下载文件并修改文件名
May 08 Javascript
纯js封装的ajax功能函数与用法示例
May 14 Javascript
如何实现vue的tree组件
Dec 03 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开发中常用的字符串操作函数
2011/02/08 PHP
php动态生成函数示例
2014/03/21 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
python相似模块用例
2016/03/04 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
python deque模块简单使用代码实例
2020/03/12 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
Django admin 实现search_fields精确查询实例
2020/03/30 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
耐克亚太地区:Nike APAC
2019/12/07 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
银行职员个人的工作自我评价
2014/02/15 职场文书
2014年预算员工作总结
2014/12/05 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL