vue动态加载图片--图片不存在时,显示默认图片

本文介绍在Vue中如何动态加载课程图片,并在图片不存在时显示默认图片的方法。通过改进图片路径计算和使用el-image组件的错误槽,实现更友好的用户界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue动态加载图片–图片不存在时,显示默认图片

一、背景

显示课程信息时,需要根据courseId为每一门课程绑定相应的课程图片。课程图片放在前端/src/assets/picture/course中。使用require导入图片时,若图片不存在,页面出现error,显示模块找不到。

二、初始的动态绑定方式

1、图片存放目录
在这里插入图片描述
2、script代码使用计算属性计算图片路径

export default {
props: {
    course: {
      type: Object,
      default() {
        return {};
      }
    }
  },
 computed: {
    imgPath() {
      return require("@/assets/picture/course/" + this.course.courseId + ".png");
    }
  }
}

3、template中绑定图片路径

<el-image :src="imgPath" style="width: 380px; height: 240px"></el-image>

el-image 为element组件
4、不足
当imgPath指向的位置不存在图片时,使用require导入图片,页面会error。不仅没有图片信息,课程相关的文字信息也无法显示。为了界面友好,可以在图片不存在时,显示默认的图片。放进方式如下。

三、改进的动态绑定方式

1、图片存放目录
在这里插入图片描述
项目使用的是vue-cli3,静态目录为public,没有static目录。webpack打包资源时,会把静态目录(与src同级的public目录)下的文件放在根目录下,且文件名不会改变。而放在其他目录下时,文件名会被更改,所以需要使用require导入图片。可通过运行命令npm run build,构建项目。在项目路径下的dist文件夹中查看文件打包后的文件。静态目录下的文件可以通过url直接访问到,如想看defaultImage.png,可通过在浏览器中输入http://localhost:8080/course/img/defaultImage.png访问。

注意,路径中不包含public。

2、script代码使用计算属性计算图片路径

export default {
props: {
    course: {
      type: Object,
      default() {
        return {};
      }
    }
  },
 computed: {
    imgPath() {
      return "/course/img/" + this.course.courseId + ".png";
    }
  }
}

3、template中绑定图片路径

<el-image :src="imgPath" style="width: 380px; height: 240px">
    <div slot="error">
        <img
            src="/course/img/defaultIamge.png"
            style="width: 380px; height: 240px"
        />
    </div>
</el-image>

当imgPath指向的位置不存在图片时,会使用显示默认的图片defaultIamge.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值