我遵循this解决方案使别名@ work:
我的vite.config.js:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
resolve: {
alias: [
{ find: '@', replacement: path.resolve(__dirname, 'src') }
],
},
})这样做是可行的:
<img src="@/assets/logo.png">这不管用:
<img src="@/assets/logo.png" srcset="@/assets/logo@2x.png 2x">下面是我在浏览器中输出的样子:
<img
src="/src/assets/logo.png"
srcset="/src/views/@/assets/logo@2x.png 2x"
>发布于 2021-05-10 05:56:16
看起来@vue/compiler-sfc有一个bug,在v3.0.0-beta.9中引入了adding support for absolute URLs in srcset。这个bug绕过了transformation that would've resolved the asset URLs in srcset。(在“GitHub问题”中报道)
我找到的一个解决办法是使用显式解析的资产URL手动创建一个srcset:
<template>
<img :srcset="srcset" />
</template>
<script setup>
import logo2x from '@/assets/logo@2x.png'
import logo3x from '@/assets/logo@3x.png'
const srcset = `${logo2x} 2x, ${logo3x} 3x`
</script>或者使用动态导入,如果需要动态更新srcset,这可能会有所帮助:
<template>
<img :srcset="srcset" />
</template>
<script setup>
import { ref } from 'vue'
const srcset = ref(null)
Promise.all([
import('@/assets/logo@2x.png'),
import('@/assets/logo@3x.png')
]).then(([{ default: logo2x }, { default: logo3x }]) => {
srcset.value = `${logo2x} 2x, ${logo3x} 3x`
})
</script>发布于 2021-05-09 07:10:01
你试过为srcset使用v绑定吗?
<img
src="@/assets/logo.png"
:srcset="require('@/assets/logo@2x.png') + ' 2x'"/>发布于 2021-06-14 13:09:00
除非您不是非常具体地将图像保存在./src/assets/images文件夹中,否则有一个简单的修复方法,即将图像移动到./public/assets/image文件夹并引用如下:
<img src="/assets/images/img-01.png"
srcset="/assets/images/img-01@2x.png 2x">https://stackoverflow.com/questions/67455076
复制相似问题