静态资源的动态访问(vite) [2023-03-31]
关键信息
- vitejs vite 引用动态资源的解释
- URL mdn 的 URL 解释
- import.meta.url 模块的基本 URL。也可以是外部脚本的 URL,还可以是内联脚本所属文档的 URL
方式
- 一个一个引入,然后根据判断和使用(需写多次,而且有额外的 js 产物)
- 通过放入
public文件夹中,不参与打包,直接引用(丢失文件指纹,可能因为缓存影响后续更换文件) - 使用
URL类和import.meta.url在 vite 中动态引入(本例)
效果

查看代码
vue
<template>
<div>
<a-radio-group
style="margin-bottom: 16px"
v-model:value="select"
button-style="solid"
>
<a-radio-button :value="1">第一张</a-radio-button>
<a-radio-button :value="2">第二张</a-radio-button>
<a-radio-button :value="3">第三张</a-radio-button>
<a-radio-button :value="4">第四张</a-radio-button>
</a-radio-group>
<img :src="imgUrl" alt="" />
</div>
</template>
<script lang="ts" setup>
import { computed, ref } from 'vue'
const select = ref(1)
const imgUrl = computed(() => {
const url = new URL(`./assets/${select.value}.jpg`, import.meta.url)
console.log('[ import.meta.url, url ]', import.meta.url, url)
return url.pathname
})
</script>