vue图片的动态绑定

Vue中动态绑定require引用资源的技巧

 1、就是想办法给路径前边加一个require()

            <!-- 直接写相对地址 -->
          <img src="../../../assets/logo.png" alt="" />
          <!-- 定义数据为require,双向绑定 -->
          <!-- imglogo2: require("../../../assets/logo.png"), -->
          <img :src="imglogo2" alt="" />

          <!-- 路径相同更改图片,imglogo: "logo.png", -->
          <img :src="require(`../../../assets/${imglogo}`)" alt="" />

 注意点

如果图片路径为../../../assets/logo.png或者@/assets/logo.png

data中数据形式为imglogo1: "@/assets/logo.png",

以下形式识别不了,../和@/作为数据加到require()中时,路径错误

要直接作为字符串写在require()中

<img :src="require(imglogo)" alt="" />
<img :src="require(`${imglogo1}`)" alt="" />

 data() {
    //这里存放数据
    return {
        
      imglogo: "@/assets/logo.png",
      imglogo1: "../../assets/logo.png",

      }
}

 2、动态绑定的三种方法

1、路径相同,在同一文件夹更改图片

<!-- 路径相同更改图片,imglogo: "logo.png", -->
          <img :src="require(`../../../assets/${imglogo}`)" alt="" />

 数据形式

data() {
    //这里存放数据
    return {
      imglogo: "logo.png",
        }
}

2、src可以绑定一个事件,返回值作为url路径

<!-- 绑定 methods中的事件传参,返回路径 -->
          <img :src="bindIcon(imglogo)" />

 js定义数据,处理数据

data() {
    //这里存放数据
    return {
      imglogo: "logo.png",
        }
},
//方法集合
  methods: {
  
    //获取图片地址
    bindIcon(icon) {
      return require("@/assets/" + icon);
    },
}

3、在mounted中处理变量,加上require

          <!-- 在mounted中处理变量,加上require -->
          <img :src="imglogo3" alt="" />

 js处理数据

data(){
       return{
            imglogo: "logo.png",
            imglogo3: "",
            a: "assets/",
        }

}

 //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {

    this.imglogo3 = require(`@/${this.a}${this.imglogo}`);
}

### Vue3 中动态绑定图片的实现方法 在 Vue3 中,为了确保图片路径能够在不同环境中正常解析并加载,推荐采用函数方式来动态绑定 `img` 标签的 `src` 属性。这种方式不仅解决了开发环境与生产环境之间的路径差异问题,还提高了代码的可维护性和灵活性。 对于图片资源的引入,应当注意区分相对路径和模块路径的区别。直接使用类似于 `'@/asset/image/xxx.png'` 的写法,在某些情况下可能会导致构建工具无法正确识别资源位置[^2]。 #### 正确的做法如下: 通过定义一个辅助函数 `getImageUrl()` 来获取图片的真实URL地址,并将其返回值赋给 `img` 组件的 `src` 属性。此方法利用了 JavaScript 模块系统的特性,能够兼容 Webpack 或 Vite 等现代前端构建工具的工作机制。 ```html <template> <div> <!-- 使用 getImageUrl 函数传递参数 --> <img :src="getImageUrl(imagePath)" alt="example image"/> </div> </template> <script setup> import { ref } from 'vue'; // 定义图像文件名变量 const imagePath = ref('xxx.png'); /** * 获取指定路径图片的实际 URL 地址 */ function getImageUrl(path) { return new URL(`/src/assets/images/${path}`, import.meta.url).href; } </script> ``` 上述代码片段展示了如何创建一个名为 `getImageUrl` 的函数用于处理图片路径转换逻辑。这里的关键在于调用了 `new URL()` 构造器配合模板字符串拼接出完整的静态资源访问链接,同时借助于 `import.meta.url` 提供当前模块的位置信息作为基础URI。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值