![1952161e98abae020b3dca1bd588271d.png](https://img-blog.csdnimg.cn/img_convert/1952161e98abae020b3dca1bd588271d.png)
大家好,我是你们的导师,经常看我朋友圈的同学应该知道,我每天会在微信上给大家免费提供以下服务!
1、长期为你提供最优质的学习资源!
2、给你解决技术问题!
3、每天在朋友圈里分享优质的技术文章!
4、每周1、3、5送纸质书籍免费送给大家,每年至少送书800本书!
5、为大家推荐靠谱的就业单位!
请注意!我上面说的5点全部都是免费的!全网你应该找不到第二家吧!
当然,大家在我私人微信上问我问题,仅限回答web前端、java相关的。
---------------------------
好了,接下来开始今天的技术分享!上次老师跟大家分享了CSS之 响应式布局的知识,今天跟大家分享下vue之 动态定义图片路径的知识。
0 前言 最近在使用vue动态设置图片路径的时候遇到了一些问题,特此整理。 我想实现的效果:点击图片,弹出系统图片选择框,选择图片后替换原图片。 App.vue中:<input type="file" id="avatar" @change="chooseFile($event)" accept="image/*" style="display: none" ><label for="avatar"><img :src="../assets/user_1.png" alt="图片">label>
结果:
![ec7e793c32a6ebea361d6331c587ee4f.png](https://img-blog.csdnimg.cn/img_convert/ec7e793c32a6ebea361d6331c587ee4f.png)
<template><ItemShow-imageChoose id="userPicture" imageSrc="../assets/user.png">ItemShow-imageChoose>template><script>import ItemShow_imageChoose from "./components/ItemShow-imageChoose"export default {name:'App',components: {"ItemShow-imageChoose":ItemShow_imageChoose } }
./components/ItemShow-imageChoose.vue:
<template><div><input type="file" :id="id" @change="chooseFile($event)" accept="image/*" style="display: none" ><label :for="id"><img :src="imageSrc" alt="图片">label>div>template><script>export default{name:'ItemShow_imageChoose',props:{"id":[String],"imageSrc":[String] },methods:{ chooseFile(e){// this.$emit('choose',e.target.files) } } }script>
结果:
![e68b474cbee7197b9a038248cbe43267.png](https://img-blog.csdnimg.cn/img_convert/e68b474cbee7197b9a038248cbe43267.png)
<template><div><input type="file" :id="id" @change="chooseFile($event)" accept="image/*" style="display: none" ><label :for="id"><img :src="src" alt="图片" />label>div>template><script>export default{name:'ItemShow_imageChoose',props:{"id":[String],"imageSrc":[String] }, data(){return {src:'../assets/user.png' //重点看这里 } },methods:{ chooseFile(e){// this.$emit('choose',e.target.files) } } }script>
结果:
![e68b474cbee7197b9a038248cbe43267.png](https://img-blog.csdnimg.cn/img_convert/e68b474cbee7197b9a038248cbe43267.png)
webpack编译后会变成:
实测:
打包成绝对路径:
打包成base64字符串:
项目目录:
![5ede77298875c8dc53dc863fc0fd90de.png](https://img-blog.csdnimg.cn/img_convert/5ede77298875c8dc53dc863fc0fd90de.png)
<template><div><img :src="src" alt="图片" />div>template><script>export default{ data(){return {src:`../assets/user.png` } } }script>
结果:
![c657a1f6908bd21286dae719999c3fe2.png](https://img-blog.csdnimg.cn/img_convert/c657a1f6908bd21286dae719999c3fe2.png)
![0fb0939b45a88e32bee412983ec429bc.png](https://img-blog.csdnimg.cn/img_convert/0fb0939b45a88e32bee412983ec429bc.png)
<template><div><img :src="src" alt="图片" />div>template><script>export default{ data(){return {src:`/static/img/user.png` } } }script>
结果:
![615be51cee6a7a2d30fea0e0570a6cf5.png](https://img-blog.csdnimg.cn/img_convert/615be51cee6a7a2d30fea0e0570a6cf5.png)
data(){
return {
src:require('../assets/user.png') //重点看这里
}
}
![]()
import userPath from '../assets/user.png'
export default{
data(){
return {
src:userPath
}
}
}
结果:
<template><div><input type="file" :id="id" @change="chooseFile($event)" accept="image/*" style="display: none" ><label :for="id"><img :src="'/static/img/'+imageSrc" alt="图片" />label>div>template><script>export default{name:'ItemShow_imageChoose',props:{"id":[String],"imageSrc":[String] },methods:{ chooseFile(e){var currentImg=e.target.nextElementSibling.childNodes[0] currentImg.setAttribute('src',window.URL.createObjectURL(e.target.files[0])) currentImg.onload=function () {window.URL.revokeObjectURL(this.src) } } } }script>
参考文献:https://www.jianshu.com/p/fab484498e4e
今天就分享这么多,
关于vue之 动态定义图片路径
,
你
学会了多少?欢迎在留言区评论,对于有价值的留言,我们都会一一回复的。如果觉得文章对你有一丢丢帮助,请点右下角【在看】,让更多人看到该文章。
![03980bd41b6be4e564f688009ec3a045.png](https://img-blog.csdnimg.cn/img_convert/03980bd41b6be4e564f688009ec3a045.png)