vue?圖片路徑?“@/assets“?報(bào)錯(cuò)問題及解決
問題
在更改背景圖片時(shí)寫的圖片相對(duì)路徑是這樣的:

由于@在webpack 被resolve.alias配置下等價(jià)于/src,然后直接運(yùn)行了程序結(jié)果報(bào)錯(cuò)了
報(bào)錯(cuò)狀態(tài):

大概意思就是說,無法解析 asset 包
解決
經(jīng)過查詢資料找到了解決辦法:
由于相對(duì)根目錄的路徑 “/assets/background.png” webpack不解析
此時(shí)需要在@前加上“~”
因?yàn)閹?ldquo;~”的路徑 “~@/assets/background.png” 被webpack解析為 require(src/assets/background.png) 動(dòng)態(tài)引入

就能成功的解決上面的問題
為什么
至于為什么會(huì)這樣
請(qǐng)看繼續(xù)往下看:
注意:絕對(duì)路徑方式導(dǎo)入的圖片需要存儲(chǔ)在 publiic 文件夾下
靜態(tài)導(dǎo)入文件路徑
<img src="../../assets/1.png" /> <!-- 或者如下 --> <img src="@/assets/1.png" />
靜態(tài)導(dǎo)入絕對(duì)路徑
<img src="images/1.png" /> <!-- 或者如下 --> <img src="/images/1.png" />
動(dòng)態(tài)導(dǎo)入相對(duì)路徑
方法1(require 寫在html中):
<img :src="require('../../assets/' + imageUrl)" />
<script>
export default {
data() {
return {
// 圖片路徑變量,真實(shí)路徑為 assets/images/1.png
img: 'images/1.png',
imageUrl: require('../../assets/' + this.img)
}
}
}
</script>
動(dòng)態(tài)導(dǎo)入絕對(duì)路徑
<img :src="imageUrl" />
<script>
export default {
data() {
return {
// 圖片路徑變量,真實(shí)路徑為 public/images/1.png
imageUrl:'images/1.png'
// 或者 imageUrl:'/images/1.png'
}
}
}
</script>
需要明白以下幾點(diǎn)內(nèi)容:
- 1.什么是相對(duì)路徑和絕對(duì)路徑?
- 2.相對(duì)路徑上加 @ 為什么不一樣?
- 3.動(dòng)態(tài)加載時(shí)為什么使用require?
1.什么是相對(duì)路徑和絕對(duì)路徑?
簡(jiǎn)單的說就是:
- 相對(duì)路徑:以 .開頭的,例如./、../之類的。就是相對(duì)于自己的目標(biāo)文件的位置。
- 絕對(duì)路徑: 以/開頭的。就是目標(biāo)文件的真實(shí)路徑,表示當(dāng)前站點(diǎn)的真是根目錄。
2.相對(duì)路徑加上 @ 為什么不一樣?
請(qǐng)仔細(xì)閱讀以下內(nèi)容:


3.動(dòng)態(tài)加載時(shí)為什么使用require?
<img :src="'./assets/images/02.jpg'" alt=""> // 錯(cuò)誤的引入方式 <!-- 編譯后 --> <img src="./assets/images/02.jpg" alt=""> <!-- 注意(絕對(duì)路徑) --> <img :src="'images/02.jpg'" alt=""> // 正確的引入方式 <!-- 編譯后 --> <img src="images/02.jpg" alt="">
src調(diào)用了v-bind指令處理其內(nèi)容,相對(duì)路徑不會(huì)被webpack的file-loader處理。
編譯后,資源目錄assets結(jié)構(gòu)已變,而代碼的目錄沒變,所以相對(duì)路徑這種方式不行,而絕對(duì)路徑?jīng)]有問題
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- vite+vue3使用@路徑報(bào)錯(cuò)處理
- vue-router解決相同路徑跳轉(zhuǎn)報(bào)錯(cuò)的問題
- vue打包靜態(tài)資源后顯示空白及static文件路徑報(bào)錯(cuò)的解決
- vue-router重寫push方法,解決相同路徑跳轉(zhuǎn)報(bào)錯(cuò)問題
- vue-cli 項(xiàng)目打包完成后運(yùn)行文件路徑報(bào)錯(cuò)問題
- 解決在vue項(xiàng)目中,發(fā)版之后,背景圖片報(bào)錯(cuò),路徑不對(duì)的問題
- Vue引入路徑正確但一直報(bào)錯(cuò)問題:Already included file name ‘××ב differs from file name ‘××ב only in casing.
相關(guān)文章
vue 項(xiàng)目中的this.$get,this.$post等$的用法案例詳解
vue.js的插件應(yīng)該暴露一個(gè)install方法。這個(gè)方法的第一個(gè)參數(shù)是vue構(gòu)造器,第二個(gè)參數(shù)是一個(gè)可選的選項(xiàng)對(duì)象,首頁要安裝axios,本文結(jié)合案例代碼給大家詳細(xì)講解vue 中的this.$get,this.$post等$的用法,一起學(xué)習(xí)下吧2022-12-12
vue點(diǎn)擊項(xiàng)目唯一id生成器nanoid的使用方式
這篇文章主要介紹了vue點(diǎn)擊項(xiàng)目唯一id生成器nanoid的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
vue3的setup語法糖簡(jiǎn)單封裝ckediter的過程
Vue3官方提供了 script setup 語法糖,只需在script標(biāo)簽中添加setup,組件只需引入不用注冊(cè),屬性和方法也不用返回,今天通過本文給大家分享vue3的setup語法糖簡(jiǎn)單封裝ckediter的過程,感興趣的朋友一起看看吧2023-10-10
Flutter部件內(nèi)部狀態(tài)管理小結(jié)之實(shí)現(xiàn)Vue的v-model功能
本文是 Flutter 部件內(nèi)部狀態(tài)管理的小結(jié),從部件的基礎(chǔ)開始,到部件的狀態(tài)管理,并且在過程中實(shí)現(xiàn)一個(gè)類似 Vue 的 v-model 的功能,感興趣的朋友跟隨小編一起看看吧2019-06-06
vue+element-ui表格自定義列模版的實(shí)現(xiàn)
本文主要介紹了vue+element-ui表格自定義列模版的實(shí)現(xiàn),通過插槽完美解決了element-ui表格自定義列模版的問題,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
Vue+ElementUI?實(shí)現(xiàn)分頁功能-mysql數(shù)據(jù)
這篇文章主要介紹了Vue+ElementUI?實(shí)現(xiàn)分頁查詢-mysql數(shù)據(jù),當(dāng)數(shù)據(jù)庫中數(shù)據(jù)比較多時(shí),就每次只查詢一部分來緩解服務(wù)器和頁面壓力。這里使用elementui的?Pagination?分頁?組件,配合mysql的limit語句,實(shí)現(xiàn)分頁查詢mysql數(shù)據(jù),下面來看看具體實(shí)現(xiàn)過程,希望對(duì)大家學(xué)習(xí)有所幫助2021-12-12

