我刚刚开始使用 Vue.js,在加载静态 img(例如我的徽标)时访问 assets 文件夹非常简单:
<img src="../assets/logo.png">
但是,我正在使用 v-for 使用示例数据创建几个列表项,这是我的模板:
<ul>
<li v-for="item in items" :key="item.id">
<img v-bind:src="item.img" v-bind:alt="item.title">
<h2 class="md-title">{{item.title}}</h2>
</li>
</ul>
这是在同一个 .vue 文件中声明的示例数据:
export default {
name: 'front',
data () {
return {
items: [
{title: 'Google Pixel', img: '../assets/pixel.png', id: 1},
{title: 'Samsung Galaxy S8', img: '../assets/s8.png', id: 2},
{title: 'iPhone 7', img: '../assets/iphone.png', id: 3}
]
}
}
}
我的问题是imgs all 404 这看起来很奇怪,因为相同的路径适用于静态imgs。如果我使用这样的绝对路径,它可以工作
https://media.carphonewarehouse.com/is/image/cpw2/pixelBLACK?$xl-standard$
浏览了文档后,我发现了这个https://vuejs-templates.github.io/webpack/static.html
这可能会解释它,但我已经尝试了每种建议的方法,但没有任何运气:
资产处置规则
相对 URL,例如 ./assets/logo.png 将被解释为模块依赖项。它们将被替换为基于您的 Webpack 输出配置自动生成的 URL。
无前缀的 URL,例如 assets/logo.png 将被视为与相对 URL 相同并被翻译成 ./assets/logo.png。
以 ~ 为前缀的 URL 被视为模块请求,类似于 require('some-module/image.png')。如果你想利用 Webpack 的模块解析配置,你需要使用这个前缀。例如,如果您有资产的解析别名,则需要使用以确保尊重别名。
根本不处理与根目录相关的 URL,例如 /assets/logo.png。
这是 webpack 而不是 vue 的问题吗?如此易于使用的库会使文件路径之类的东西变得复杂,这似乎很疯狂。