vue引入图片url变量问题


vue引入图片url变量问题

  1. 引入方式

普通引入

<template>
  // 普通引入
  <img src = "../assets/images/01.jpg">  
  // webpack编译处理后:
  <img src = "/img/01.f0afc36d.jpg">
<template>

变量引入

<template>
    // 变量引入
    <img :src = "imgUrl">
    // webpack编译处理后:
    <img src = "'../assets/images/01.jpg'" >
</template>

<script>
export default{
  data(){
    return{
        imgUrl: "../assets/images/01.jpg"
    }
  }
}
</script>

可见,此时图片将不会显示,路径是错误的,因为使用 :src 调用了 v-bind 指令处理其内容,相对路径不会被webpack的 file-loader 处理。
2. 解决方法
当路径的文件名需要拼接变量的时候,可使用 require() 引入。

方法1: 把imgUrl放在数据中

<template>
    <img :src = "require('../assets/images/'+imgUrl) ">
    // 这里的 :src = require()需像这样采用字符串拼接的形式或者直接写一个字符串,不能直接绑定变量如require(imgUrl)
</template>

<script>
export default{
    data(){
        return{
            imgUrl: "01.jpg"
        }
    }
}
</script>

方法2: 在生命周期函数中设置

<template>
    <img :src = "imgUrl ">
</template>

<script>
export default{
    data(){
        return{
            imgUrl: ""
        }
    },
    created() {
        let url = "assets/images/01.jpg";
        this.imgUrl = require("@/" + url)
    }
}
</script>

方法3: 直接将图片引入为模块

require imgUrl from "../assets/images/01.jpg"

本文转自:http://ydongabc.gitee.io/blog/2020/04/24/vue%E5%BC%95%E5%85%A5%E5%9B%BE%E7%89%87url%E5%8F%98%E9%87%8F/


文章作者: Mr. Zhan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Mr. Zhan !
 上一篇
使用Vue.observable()进行状态管理 使用Vue.observable()进行状态管理
使用Vue.observable()进行状态管理用法:让一个对象可响应。Vue 内部会用它来处理 data 函数返回的对象。返回的对象可以直接用于渲染函数和计算属性内,并且会在发生变更时触发相应的更新。也可以作为最小化的跨组件状态存储器,用
2020-07-11 Mr. Zhan
下一篇 
apply和call的高级用法 apply和call的高级用法
apply和call的高级用法1. 求数组中的最小值,借用 apply方法// var min = Math.min(11,2,4,5); // console.log(min); // 2 var arr = [11,2,4,5];
2020-05-14 Mr. Zhan
  目录