首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vite Vue-3 - project @ not for srcset

Vite Vue-3 - project @ not for srcset
EN

Stack Overflow用户
提问于 2021-05-09 06:59:18
回答 3查看 2.3K关注 0票数 1

我遵循this解决方案使别名@ work:

我的vite.config.js:

代码语言:javascript
复制
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') }
    ],
  },
})

这样做是可行的:

代码语言:javascript
复制
<img src="@/assets/logo.png">

这不管用:

代码语言:javascript
复制
<img src="@/assets/logo.png" srcset="@/assets/logo@2x.png 2x">

下面是我在浏览器中输出的样子:

代码语言:javascript
复制
<img
  src="/src/assets/logo.png"
  srcset="/src/views/@/assets/logo@2x.png 2x"
>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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

代码语言:javascript
复制
<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,这可能会有所帮助:

代码语言:javascript
复制
<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>
票数 4
EN

Stack Overflow用户

发布于 2021-05-09 07:10:01

你试过为srcset使用v绑定吗?

代码语言:javascript
复制
<img 
  src="@/assets/logo.png" 
  :srcset="require('@/assets/logo@2x.png') + ' 2x'"/>
票数 0
EN

Stack Overflow用户

发布于 2021-06-14 13:09:00

除非您不是非常具体地将图像保存在./src/assets/images文件夹中,否则有一个简单的修复方法,即将图像移动到./public/assets/image文件夹并引用如下:

代码语言:javascript
复制
<img src="/assets/images/img-01.png"
     srcset="/assets/images/img-01@2x.png 2x">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67455076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档