版本:
D:>vue -V
@vue/cli 4.5.7-
目錄結(jié)構(gòu)
image.png 問題:
無論如何設置,都無法訪問/static的圖片,百思不得其解!
-解決:
找了半天,發(fā)現(xiàn)根目錄居然有一個/static的文件夾,事實上,vue的靜態(tài)文件是放在/public/static里的,這個長在根目錄下的/static是怎么來的???原因未知。這下就好辦了,把圖片挪到/public/static里,一切正常。
- 結(jié)論:
/public/static的資源,只能用絕對地址來訪問:
<img src="/static/logo.png" />
<img :src="'/static/logo.png'" />
注意第1行是HTML最傳統(tǒng)的加載方法,就是顯示一副固定圖片。
第2行是vue將src屬性進行了雙向綁定,此處的'/static/logo.png',很明顯它就是一個字符串,因此也可用一個變量來表達,便于動態(tài)加載圖片。用這種方式webpack不會對其進行打包,static下的所有文件只是原封不動地進行Copy處理(但仍然是按需原則,那些完全沒有使用到的資源并不會被拷貝)/src/assets內(nèi)的資源,可以用相對地址來訪問:
<img :src="require('../assets/logo.png')" />
以這種形式加載,同樣對src進行了雙向綁定,可以支持動態(tài)加載,但webpack會將其打包,并修改其文件名。任意目錄的資源,可以用相對地址來訪問:
<img src = "../../hello/logo.png" />
假設有/hello這個目錄,可以用相對地址進行訪問(任意目錄),但是webpack會自動將它轉(zhuǎn)化為base64圖片字符串形式,并且這種方式只能訪問固定資源,無法雙向綁定,自然也無法使用變量來動態(tài)加載了。心得:當發(fā)現(xiàn)無法訪問static的資源時,先看看static是不是在public下,免得走冤枉路!
