webpack 批量引入所有静态图片

1./utils/tool.js 
// 获取静态静态文件所有图片
  export const imageAssets = () => {
    // 静态路径地址
      const req = require.context('@/assets/img/home', true, /\.svg$/);
      const imageMap = new Map();
      req.keys().forEach((key) => {
        const imgName = key.replace(/^\.\/(.*)\.\w+$/, '$1');
        imageMap.set(imgName, { imgName, iconUrl: `${imgName}.svg` });
      });
      return imageMap
  }
  
 2.使用
  <div v-for="(item, index) in allSystem" :key="index">
            <img :src="imgUrl(item)" />
  </div>

<script>
import { imageAssets } from "@/utils/tool";
 export default {
  data() {
    return {
      allSystem: []
    };
  },
  created() {
    this.allSystemIcons = imageAssets();
  },
  mounted() {
    this.managemenSystem();
  },
  computed: {
    imgUrl() {
      return (item) => {
        // 动态渲染拼接图片
        return item.icon ? require(`@/assets/img/home/${item.icon}`) : "";
      };
    },
  },
  methods: {
    managemenSystem() {
      // 数据请求
      request().then((res) => {
        const { code, data, description } = res.data;
        if (code === "000000") {
          // 这里需要跟引入的图片名称保持一致
          const systemRelation = { 
            1: "zonghe", // 综合
            4: "pingfu", //数据门户网站 重复
            6: "permission", //统一权限管理平台
          };
          this.allSystem = data.map((item) => {
            const name = systemRelation[item.id];
            const systemInfo = this.allSystemIcons.get(name);
            item.icon = systemInfo?.iconUrl;
            return item;
          });
        } else {
          this.$Message.error(description);
        }
      });
    },
  },
};
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值