1. 程式人生 > >vue中,本地圖片路徑寫到js中,為何渲染不出來?

vue中,本地圖片路徑寫到js中,為何渲染不出來?

首先看一個專案

目錄結構:

程式碼如下:

html:

<img src="../../assets/logo.png" alt="">

編譯效果:

是不是圖片顯示出來了,但是如果我的圖片路徑是寫到data裡面的,在img上面,繫結一個data的資料,那麼是不是圖片載入不出來?但是圖片的路徑還是有的?如下效果:

程式碼如下:

html:

<img :src="imgUrl" alt="">

<img src="{{ imgUrl }}"/>  //錯誤寫法

<p>{{imgUrl}}</p>

不過,有時候即使使用了正確的語法,依舊無法顯示圖片,找了好幾次程式碼,依然無法發現錯誤。原因是你的imgUrl使用了本地圖片的路徑。

既然找不到,我們去build資料夾下,看目錄結構:

是不是說只要把url改成./static/img/logo.png就可以了呢?依然是不行的。開啟img資料夾我們可以發現,所有的檔名後都被新增上了一個隨機字串,原始的檔名已經無法對應了。

那麼,到底應該怎麼載入本地圖片呢?回頭看vue-cli的檔案結構,發現其中有一個叫做static的資料夾,嘗試將logo.png放入這個資料夾,然後修改imgUrl:

程式碼如下:

html:

<img style="width:200px;" :src="imgUrl" alt="">

js:

imgUrl: '../../../static/img/test.jpg'

效果如下:

成功讀取到了test.jpg,執行npm run build後檢視dist檔案,發現test.jpg.原封不動地放在了根目錄下。

原來,之前的目錄結構是有問題的,圖片一類的靜態檔案,應該放在這個static資料夾下,這個資料夾下的檔案(夾)會按照原本的結構放在網站根目錄下。這時我們再去使用/static絕對路徑,就可以訪問這些靜態檔案了。