vue實現在data裡引入相對路徑
在data裡引入相對路徑
問題
在項目的HTML中引入圖片的相對路徑,這樣寫是能找到圖片顯示出來的:
<img src="../../../static/img/step-ongoing.png">
但圖片太多感覺太亂瞭瞭,想在data中通過變量統一管理。這時發現如果直接在data中這樣寫圖片是找不到的:
<img :src="stepOngoing"> data() { return { stepOngoing: '../../../static/img/step-ongoing.png', } }
解決
發現隻有這麼寫才行,require內部引入:
data() { return { stepOnGoing: require('../../../static/img/step-ongoing.png'), } }
或者用import 在外部引入:
import stepOnGoing_src from '../../../static/img/step-ongoing.png' data() { return { stepOnGoing: stepOnGoing_src, } }
如何在data中正常引入圖片路徑
在Vue項目中通過data設置圖片路徑,然後在template中引入後頁面無法顯示圖片,瀏覽器控制臺報錯:
剛開始以為是路徑出問題瞭,於是絕對路徑、相對路徑各種辦法試瞭一遍,發現還是報錯,後來才發現這是因為在Vue裡動態生成的路徑無法被url-loader解析到,
此時有兩種解決方法
方法一:直接將你的圖片源文件放在項目目錄的static文件夾裡,然後和正常寫圖片路徑那樣寫就可以瞭:
方法二:通過import的方法將圖片源路徑引入,如下圖所示:
需要註意的是:在Vue裡圖片是通過v-bind綁定src屬性的,所以template模板上的img標簽並不是src="",而是v-bind:src=""或簡寫為:src="",如果這裡寫錯瞭,那無論如何都無法正常引入圖片。
方法三:采用背景圖做法,通過data將圖片源路徑引入,利用內聯樣式。
如下代碼所示:
<div :style="imgStyle"></div> data () { imgStyle: { backgroundImage:`url(${require('@/assets/images/xxx.png')})` } }
如此也可將圖片正常引入項目中並作為背景圖使用。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- vue如何在data中引入圖片的正確路徑
- vue背景圖片路徑問題及解決
- Vue一個動態添加background-image的實現
- react 項目中引入圖片的幾種方式
- 使用webpack手動搭建vue項目的步驟