如果使用
在(Vu3,Vue2,Nuxt 2(和bundler为
在(Vu3,Vue2,Nuxt 2(和bundler为
:Nuxt3应用程序出现以下问题。当通过template strings
设置图像源时,构建过程将不会渲染图像。否则,当我正常设置图像src时,它会。但我需要它的动力。有一些具有不同图像的预告片需要渲染。
每个人都工作得很好,例如道具。。。
工作代码:
...
<img
src="/assets/_DSC0238_E.jpg"
:alt="props.name"
class="w-full aspect-square object-cover"
:class="`aspect-${props.aspectRatio}`"
/>
...
无效代码:
...
<img
:src="`props.image`"
:alt="props.name"
class="w-full aspect-square object-cover"
:class="`aspect-${props.aspectRatio}`"
/>
...
解决这个问题的方法是什么?
如果使用Nuxt 3
和Vite
作为Bundler
将资源设置为可组合。
export default function useAssets() {
const svgs = import.meta.globEager('/src/assets/*.svg');
const pngs = import.meta.globEager('/src/assets/*.png');
const jpegs = import.meta.globEager('/src/assets/*.jpeg');
return {
aboutImage: svgs['/src/assets/aboutImage.svg'].default,
search: svgs['/src/assets/search.svg'].default,
info: pngs['/src/assets/info.png'].default,
};
}
然后在任何文件中:
<template>
<div>
<img :src="assets.info">
</div>
</template>
<script lang="ts">
import { defineComponent } from '@vue/runtime-core';
import useAssets from '../composable/useAssets';
export default defineComponent({
setup() {
const assets = useAssets();
return {
assets,
};
},
});
</script>
资源
在(Vu3,Vue2,Nuxt 2(和bundler为Webpack
的情况下
您需要require
图像路径,并通过在:src
之前添加冒号来设置动态src
属性
<img
:src="require(`~/assets/${props.image}`)"
:alt="props.name"
class="w-full aspect-square object-cover"
:class="`aspect-${props.aspectRatio}`"
/>
在(Vu3,Vue2,Nuxt 2(和bundler为Vite
的情况下
const getImage = async imgName => {
// set the relative path to assets
const module = await import(/* @vite-ignore */ `../../assets/${imagName}`)
return module.default.replace(/^/@fs/, '')
}
<img
:src="getImage(props.image)"
:alt="props.name"
class="w-full aspect-square object-cover"
:class="`aspect-${props.aspectRatio}`"
/>
我们可以使用v-bind动态地为它们分配一个字符串值。读取此
尝试如下:
<img
v-bind:src="require(`@/assets/${props.image}`)"
:alt="props.name"
class="w-full aspect-square object-cover"
:class="`aspect-${props.aspectRatio}`"
/>
或用于简写语法
<img
:src="require(`@/assets/${props.image}`)"
:alt="props.name"
class="w-full aspect-square object-cover"
:class="`aspect-${props.aspectRatio}`"
/>