使用require.context完成本地图片批量导入

今天给大家分享的内容是:使用webpack中的require.context功能,批量导入本地图片,并且可根据需要支持多格式图片导入。

一、步骤讲述

  1. 使用require.context导入本地图片,require.context就不详细讲述了,如果有兴趣大家可以去看一下webpack官网
  2. 使用substr方法和substring方法来完成图片信息的编辑,并赋值到对应的位置。
  3. 使用vue环境。

二、具体代码

  1. 赋值的前台代码
    <template>
      <div class="home">
          <a href="javascript:void(0)" v-for="(item,index) in img" :key="index">
            <img :src="item.url" :alt="item.name" srcset="">
          </a>
      </div>
    </template>
    
  2. 具体编辑的js代码
    <script>
    export default {
      name: 'Home',
      data() {
        return {
          img:[]
        }
      },
      methods: {
        batchImport(){
          // 定义获取到的形参
          let _format = arguments;
          // 定义根据格式判断后缀长度
          let length;
          // 定义从文件夹中导入的图片
          let requireModule;
          // 定义一个数组用于承载图片的信息
          let imagesNameArr = [];
          for(let i = 0;i < _format.length;i++){
            // 根据后缀判断图片格式
            if(_format[i] == 'jpg'){
              requireModule = require.context("../../public/images/",false,/\.jpg$/);
              length = 4;
            }else if(_format[i] == 'webp'){
              requireModule = require.context("../../public/images/",false,/\.webp$/);
              length = 5;
            }
            imagesNameArr = [];
            for (var j = 0; j < requireModule.keys().length; j++) {
              // 将图片的名字从第二位开始抽取赋值到imagesNameArr
              imagesNameArr.push(requireModule.keys()[j].substr(2, requireModule.keys()[j].length));
              // 定义对象,存放图片的名称和路径
              let value = {
                name: '',
                url: ''
              }
              // 将图片的名称和url传入value对象
              value.name = imagesNameArr[j].substring(0,imagesNameArr[j].length-length);
              value.url = '/images/' + imagesNameArr[j];
              // 将value对象传入data中
              this.img.push(value);
            }
          }
        }
      },
      mounted(){
      	// 在此输入图片的格式,可以进行多格式的添加和删除,若要使用除jpg、webp之外的格式,应在batchImport中添加对应代码
        this.batchImport('jpg','webp');
      }
    }
    </script>
    

三、代码验证环境

  • vue3.0
    

四、项目实现(demo)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值