[Vite]import.meta.glob批量引入svg图片

12 篇文章 0 订阅

[Vite]import.meta.glob批量引入svg图片

  • 这只是一个 Vite 独有的功能而不是一个 Web 或 ES 标准
  • 该 Glob 模式会被当成导入标识符:必须是相对路径(以 ./ 开头)或绝对路径(以 / 开头,相对于项目根目录解析)。
  • Glob 匹配是使用 fast-glob 来实现的 —— 阅读它的文档来查阅 支持的 Glob 模式
  • 你还需注意,glob 的导入不接受变量,你应直接传递字符串模式。
  • glob 模式不能包含与包裹引号相同的引号字符串(其中包括 '",```),例如,如果你想实现 '/Tom\'s files/**' 的效果,请使用 "/Tom's files/**" 代替。

webpack中,使用require.context如何自动导入组件

而在vite中,不支持使用require,应使用import.meta.globEager实现自动化导入store中的模块;

导入图片

// 获取图片url
export const getImgUrl = (name, suffix = 'svg') => {
    return new URL(`/src/assets/img/${name}.${suffix}`, import.meta.url).href;
};

// 获取状态->图片url的dict
function getStatusImgDict() {
    const modules = import.meta.glob(`/src/assets/status/*.svg`);
    Object.keys(modules).forEach(key => {
        const newKey = getFileName(key);
        // modules[newKey] = modules[key];
        modules[newKey] = getImgUrl(newKey);
        delete modules[key];
    });
    return modules;
}

// 状态->图片url的dict
const statusImgDict = getStatusImgDict();



// 根据传入的状态获取
function getStatusImg(status) {
    return statusImgDict[status];
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值