Electron 应用中使用 vue + webpack 引用静态资源
Reference to static assets with vue + webpack in electron app
我是 vuejs + webpack + electron 的新手,我正在使用这些工具开始一个新项目。
我很难在我的标签中检索到我的资产的路径。
我的项目结构如下:
/my-project
/app
/components
componentA.vue
...
App.vue
main.js
/dist
/assets
logo.png
package.json
webpack.config.js
...
我的 webpack.config.js 看起来像:
module.exports = {
// This is the "main" file which should include all other modules
entry: './app/main.js',
// Where should the compiled file go?
output: {
// To the `dist` folder
path: './dist',
// With the filename `build.js` so it's dist/build.js
filename: 'build.js'
},
module: {
loaders: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.js$/,
loader: 'babel-loader',
query: {
presets: ['es2015']
},
exclude: /node_modules/
},
{
test: /\.(jpeg|png|gif|svg)$/,
loader: "file-loader?name=[name].[ext]"
}
]
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.common.js',
}
}
}
在文件 componentA.vue 中,我正在尝试执行以下操作:
<template>
<div>
<img class="ui small image" src="../../assets/logo.png">
</div>
</template>
<script>
...
</script>
但是我有以下错误
Failed to load resource: net::ERR_FILE_NOT_FOUND file:///logo.png
浏览器试图加载文件:///logo.png(这是错误的,因为它不是我的资产的完整路径,它错过了我的项目目录的整个路径)所以我试着把我在输出 /dist 文件夹中的资产没有结果(但我不确定我是否正确)。
你能帮我解决这个问题吗?
非常感谢!
为了让 Webpack 能够 return 正确的路径,你需要进行以下更改:
<template>
<div>
<img class="ui small image" :src="imageSource">
</div>
</template>
<script>
export default {
data(){
return {
imageSource: require('../../assets/logo.png')
}
}
</script>
另一种方法是将图像存储在static
目录中。这样,您可以直接在 html 指令中添加图像路径。
<template>
<div>
<img src="/static/example.png">
</div>
</template>
<script>
export default {}
</script>
我是 vuejs + webpack + electron 的新手,我正在使用这些工具开始一个新项目。
我很难在我的标签中检索到我的资产的路径。
我的项目结构如下:
/my-project
/app
/components
componentA.vue
...
App.vue
main.js
/dist
/assets
logo.png
package.json
webpack.config.js
...
我的 webpack.config.js 看起来像:
module.exports = {
// This is the "main" file which should include all other modules
entry: './app/main.js',
// Where should the compiled file go?
output: {
// To the `dist` folder
path: './dist',
// With the filename `build.js` so it's dist/build.js
filename: 'build.js'
},
module: {
loaders: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.js$/,
loader: 'babel-loader',
query: {
presets: ['es2015']
},
exclude: /node_modules/
},
{
test: /\.(jpeg|png|gif|svg)$/,
loader: "file-loader?name=[name].[ext]"
}
]
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.common.js',
}
}
}
在文件 componentA.vue 中,我正在尝试执行以下操作:
<template>
<div>
<img class="ui small image" src="../../assets/logo.png">
</div>
</template>
<script>
...
</script>
但是我有以下错误
Failed to load resource: net::ERR_FILE_NOT_FOUND file:///logo.png
浏览器试图加载文件:///logo.png(这是错误的,因为它不是我的资产的完整路径,它错过了我的项目目录的整个路径)所以我试着把我在输出 /dist 文件夹中的资产没有结果(但我不确定我是否正确)。
你能帮我解决这个问题吗? 非常感谢!
为了让 Webpack 能够 return 正确的路径,你需要进行以下更改:
<template>
<div>
<img class="ui small image" :src="imageSource">
</div>
</template>
<script>
export default {
data(){
return {
imageSource: require('../../assets/logo.png')
}
}
</script>
另一种方法是将图像存储在static
目录中。这样,您可以直接在 html 指令中添加图像路径。
<template>
<div>
<img src="/static/example.png">
</div>
</template>
<script>
export default {}
</script>