这个问题与 Evan You 的以下引用有关,可以找到here:
因为 imagePath 仅由 Vue 在运行时渲染,所以 Webpack 没有机会重写它。
Your JavaScript
代码需要是这样的:
export default {
name: "App",
data: function () {
return {
items: [
{ id: "1", src: "logo.png", tags: ["all", "tag1"] },
{ id: "2", src: "logo.png", tags: ["all", "tag2"] },
{ id: "3", src: "logo.png", tags: ["all", "tag2"] },
{ id: "4", src: "logo.png", tags: ["all", "tag1"] },
{ id: "5", src: "logo.png", tags: ["all", "tag1"] },
{ id: "6", src: "logo.png", tags: ["all", "tag2"] },
{ id: "7", src: "logo.png", tags: ["all", "tag1"] },
{ id: "8", src: "logo.png", tags: ["all", "tag2"] },
{ id: "9", src: "logo.png", tags: ["all", "tag2"] },
],
};
},
methods: {
getImgUrl: function (imagePath) {
return require('@/assets/' + imagePath);
}
}
};
之后,您需要致电您的getImgUrl
通过传递文件名来实现函数。你的HTML
会是这样的:
<div id="app">
<img class="list-complete-img" src="./assets/logo.png" />
<div v-for="item in items" :key="item.id">
<img class="list-complete-img" :src="getImgUrl(item.src)" />
</div>
</div>
由于我无法访问您的图像,因此我擅自使用 Vue 徽标作为图像。
综上所述,上述问题必须做到以下几点:Vue
编译时,它会获取所有资源并将它们放入另一个文件夹中,如下图所示:
遵循这个模式,你的例子也会起作用。享受!
编辑:如果需要,您可以将静态资产放置在公共文件夹中。这样,您将能够为您的资产编写静态路径。