vue的url請(qǐng)求圖片的問(wèn)題及請(qǐng)求失敗解決
vue的url請(qǐng)求圖片的問(wèn)題,請(qǐng)求失敗
使用vue-cli創(chuàng)建項(xiàng)目時(shí),發(fā)現(xiàn)文件結(jié)構(gòu)中有一個(gè)叫做static的文件夾。
圖片一類的靜態(tài)文件,應(yīng)該放在這個(gè)static文件夾下,這個(gè)文件夾下的文件(夾)會(huì)按照原本的結(jié)構(gòu)放在網(wǎng)站根目錄下。
這時(shí)我們?cè)偃ナ褂?static絕對(duì)路徑,就可以訪問(wèn)這些靜態(tài)文件了
在vue的開發(fā)中遇到這樣一個(gè)問(wèn)題
img的src屬性綁定url變量,然而圖片加載失敗。
大部分的情況中,是開發(fā)者使用了錯(cuò)誤的寫法,例如:
<img src="{{ url }}"/>
這樣寫肯定是不對(duì)的,正確的寫法應(yīng)該使用v-bind:
<img v-bind:src="url "/>
不過(guò),有時(shí)候即使使用了正確的語(yǔ)法,依舊無(wú)法顯示圖片,因?yàn)槟愕膇mgUrl使用了本地圖片的路徑。
Vue中img的src屬性綁定與static文件夾實(shí)例_JavaScript
現(xiàn)在,我們要在App.vue里使用位于src/assets/目錄下的logo.png圖片,于是,我們?cè)O(shè):
url = ‘./assets/logo.png'
奇怪的事情出現(xiàn)了,圖片加載失敗。查看網(wǎng)頁(yè)源代碼,發(fā)現(xiàn)一個(gè)錯(cuò)誤
然后在<img src= './assets/M.png'>可以顯示的出來(lái)
正確的圖片顯示的路徑是這樣的
看這個(gè)錯(cuò)誤代碼,我們發(fā)現(xiàn),網(wǎng)頁(yè)把根域名作為相對(duì)路徑的根目錄了,然而我們文件的路徑是相對(duì)于項(xiàng)目文件的根目錄的,當(dāng)然就找不到了。
是不是說(shuō)只要把url改成./static/img/logo.png就可以了呢?
依然是不行的。打開img文件夾我們可以發(fā)現(xiàn),所有的文件名后都被添加上了一個(gè)隨機(jī)字符串,原始的文件名已經(jīng)無(wú)法對(duì)應(yīng)了。
那么,到底應(yīng)該怎么加載本地圖片呢?
回頭看vue-cli的文件結(jié)構(gòu),發(fā)現(xiàn)其中有一個(gè)叫做static的文件夾,嘗試將logo.png放入這個(gè)文件夾,然后修改imgUrl:
url = ‘/static/logo.png' url = ‘./static/logo.png' url = '…/static/logo.png'
都可以成功讀取到了logo.png. 執(zhí)行 npm run build后查看dist文件,發(fā)現(xiàn)logo.png原封不動(dòng)地放在了根目錄下。
這樣就可以成功的顯示
原來(lái),之前的目錄結(jié)構(gòu)是有問(wèn)題的,圖片一類的靜態(tài)文件,應(yīng)該放在這個(gè)static文件夾下,這個(gè)文件夾下的文件(夾)會(huì)按照原本的結(jié)構(gòu)放在網(wǎng)站根目錄下。
這時(shí)我們?cè)偃ナ褂?static絕對(duì)路徑,就可以訪問(wèn)這些靜態(tài)文件了。
另外,如果說(shuō)想在不調(diào)整目錄結(jié)構(gòu)的情況下讀取本地圖片,還有一個(gè)方法,那就是直接傳入圖片編碼。
即:
url = require('./assets/M.png')
這樣可以讀到項(xiàng)目路徑下的圖片,但是要注意,因?yàn)镃ommonJS只允許使用字符串字面量,所以這種方法的靈活性依舊很差,所以還是推薦將靜態(tài)文件放入static文件夾下。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue中計(jì)算屬性未生效:原因、排查與解決過(guò)程
本文將深入探討計(jì)算屬性未生效的常見原因,并提供排查和解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03vue2.0開發(fā)實(shí)踐總結(jié)之疑難篇
這篇文章主要為大家總結(jié)了vue2.0開發(fā)實(shí)踐的疑難,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12vue+element?ui表格添加多個(gè)搜索條件篩選功能(前端查詢)
這篇文章主要給大家介紹了關(guān)于vue+element?ui表格添加多個(gè)搜索條件篩選功能的相關(guān)資料,最近在使用element-ui的表格組件時(shí),遇到了搜索框功能的實(shí)現(xiàn)問(wèn)題,需要的朋友可以參考下2023-08-08Vue.js中該如何自己維護(hù)路由跳轉(zhuǎn)記錄
這篇文章主要給大家介紹了關(guān)于Vue.js中該如何自己維護(hù)路由跳轉(zhuǎn)記錄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Vue.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05vue iview實(shí)現(xiàn)分頁(yè)功能
這篇文章主要為大家詳細(xì)介紹了vue iview實(shí)現(xiàn)分頁(yè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07Vue自定義Hook實(shí)現(xiàn)簡(jiǎn)化本地存儲(chǔ)
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)使用 Vue 3 的 Composition API 創(chuàng)建一個(gè)強(qiáng)大而靈活的自定義 Hook,簡(jiǎn)化了在 localStorage 或 sessionStorage 中管理數(shù)據(jù)的流程,需要的可以參考下2023-12-12