【发布时间】:2018-08-29 17:18:06
【问题描述】:
我正在使用带有 Webpack 的 Vue-cli 3,我的文件夹结构如下所示:
/public
/src
/assets
p1.jpg
p2.jpg
App.vue
main.js
我在几个地方读到,为了让 Webpack 知道你的 /assets 在哪里,如果你在 Javascript 领域,你应该使用 require()。
我已确定此代码有效:
<template>
<div>
<ul>
<li v-for="photo in photos" :key="photo.id">
<img :src="photo.imageUrls.default" />
</li>
</ul>
</div>
</template>
<script>
/* For webpack to resolve URLs in javascript during the build, you need the require() function */
export default {
data() {
return {
photos: [
{
id: 1,
caption: 'P1',
series: '',
notes: '',
imageUrls: {
default: require('./assets/p1.jpg')
}
},
{
id: 2,
caption: 'P2',
series: '',
notes: '',
imageUrls: {
default: require('./assets/p2.jpg')
}
}
]
}
}
}
</script>
但是,这不起作用。我在控制台中看到一个错误: “错误:找不到模块'./assets/p1.jpg'”
<template>
<div>
<ul>
<li v-for="photo in photos" :key="photo.id">
<img :src="imagePath(photo)" />
</li>
</ul>
</div>
</template>
<script>
/* For webpack to resolve URLs in javascript during the build, you need the require() function */
export default {
data() {
return {
photos: [
{
id: 1,
caption: 'P1',
series: '',
notes: '',
imageUrls: {
default: './assets/p1.jpg'
}
},
{
id: 2,
caption: 'P2',
series: '',
notes: '',
imageUrls: {
default: './assets/p2.jpg'
}
}
]
}
},
methods: {
imagePath(photo) {
return require(photo.imageUrls.default);
}
}
}
</script>
是否有人可以帮助解释第二个示例中的问题?我希望避免将 require() 调用放入数据中,因为该数据可能来自服务器,并且在数据中放入 require() 调用对我来说似乎很奇怪。谢谢。
编辑:根据 Edgar 在下面的建议,由于我的图像是服务器的一部分而不是应用程序的一部分,我可以将它们放入 /public 文件夹中的文件夹中,根本不处理 require()。
【问题讨论】:
标签: javascript vue.js webpack vuejs2