vue3+vite 动态引用静态资源及动态引入assets文件夹图片的多种方式

2,024 阅读1分钟

这里我们先假设:
静态文件目录:src/assets/images/
我们的目标静态文件在: src/assets/images/home/home_bg.png

<img :src=``"require('@/assets/images/home/home_bg.png')"` `/>

 通过require动态引入, 发现报错:require is not defind,这是因为 require 是属于 Webpack 的方法

第一种方式(适用于单个资源文件) 

import homeBg from  'src/assets/images/home/home_bg.png'

<img :src="homeBg" />

 第二种方式(适用于多个资源文件,动态传入文件路径)

 new URL() + import.meta.url

 在src目录下创建一个util文件夹,文件夹里创建一个utils.ts文件


// 获取assets静态资源
const getAssetsFile = (url: string) => {
    return new URL(`../assets/images/${url}`, import.meta.url).href
};
export default{ getAssetsFile };

 在vue文件中导入

<script setup lang="ts">
    import { getAssetsFile } from  'src/util/utils'
</script>

使用方式

<template>
    <img class="bg-img" :src="getAssetsFile('bg.png')" />
</template>

第三种方式(适用于多个资源文件,这种方式引入的文件必须指定到具体文件夹路径,传入的变量中只能为文件名,不能包含文件路径)

 例如在assets/images文件下还有一个home文件夹

// 获取assets静态资源
const getAssetsFile = (url: string) => {

    const path =`../assets/images/home/${url}`;
    const modules = import.meta.glob("../assets/images/home/*");
    return modules[path].default;
};
export default { getAssetsFile };

<script setup lang="ts">
import util from  'src/util/utils'
</script>

<template>
<img class="bg-img" :src="util.getAssetsFile('bg.png')" />
</template>

如果是背景图片引入的方式(一定要使用相对路径)

.bg-box{
    ackground-image: url('../../assets/images/bg.png');
}

到此这篇关于vue3+vite 动态引用静态资源,动态引入assets文件夹图片的几种方式的文章就介绍到这了,更多相关vue3 vite 动态引用静态资源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!