項(xiàng)目中的圖片在build之后總會(huì)出現(xiàn)各種引用不到的問(wèn)題,報(bào)404,解決方法如下:
webpack中配置別名
...
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
'assets': path.resolve(__dirname, '../src/assets'),
'img': resolve('static/img'),
'%': resolve('./static')
}
},
...

image.png
CSS loader 會(huì)把把非根路徑的url解釋為相對(duì)路徑, 加~前綴才會(huì)解釋成模塊路徑。
在使用時(shí)加上~,告訴加載器它是一個(gè)模塊,而不是相對(duì)路徑。例如:
<img src="~img/navbar/空間分析.png" alt="" />
但是在js中使用相對(duì)路徑時(shí),不需要加~,例如:
<template>
<img src="~assets/images/logo.jpg" />
</template>
<script>
import 'assets/css/style.css'
</script>
<style>
.logo {
background: url(~asset/images/bg.jpg)
}
</style>
只有在template中的靜態(tài)文件地址和style中的靜態(tài)文件地址需要加~, 在script里的, 別名定義成什么就寫(xiě)什么.
在js數(shù)據(jù)中如何引用圖片
因?yàn)閣ebpack會(huì)將圖片當(dāng)做模塊來(lái)引用,所以在js中需要使用require將圖片引用進(jìn)來(lái),不能直接以字符串的形式。
let imageUrl = require("./img/marker_green.png");
具體請(qǐng)查看vue中圖片src路徑賦值