vue2.0 資源文件assets和static的區(qū)別詳解
資源文件處理
在我們的項(xiàng)目結(jié)構(gòu)里,有兩個(gè)資源文件的路徑,分別是:src/assets 和 static/。那這兩個(gè)到底有什么區(qū)別呢?
Webpacked 資源
為了回答這個(gè)問題,我們首先需要理解webpack是怎樣處理靜態(tài)資源的。在*.vue組件中,所有的templates和css都會(huì)被vue-html-loader 和 css-loader解析,尋找資源的URL。
舉個(gè)例子,在 <img src="./logo.png"> 和 background: url(./logo.png), “./logo.png”中,都是相對(duì)資源路徑,都會(huì)被Webpack解析成模塊依賴 。
由于logo.png不是JavaScript,當(dāng)被看成一個(gè)模塊依賴的時(shí)候,我們需要使用url-loader 和 file-loader進(jìn)行處理。 該模板已經(jīng)配置好了這些loaders,所以你能夠使用相對(duì)/模塊路徑時(shí)不需要擔(dān)心部署的問題。由于這些資源可能在構(gòu)建的時(shí)候被內(nèi)聯(lián)/復(fù)制/重命名, 所以它們從本質(zhì)上來(lái)說(shuō)是你源碼的一部分。這就是為什么我們建議將交由webpack處理的靜態(tài)資源和其它源文件一樣放在/src路徑下面。實(shí)際上,你甚至不需要把它們?nèi)挤旁?src/assets路徑下:你可以基于模塊/組件的使用來(lái)組織文件結(jié)構(gòu)。例如,你可以把每個(gè)組件和屬于它的靜態(tài)資源放在它自己的目錄下。
資源處理規(guī)則
相對(duì)URL, e.g. ./assets/logo.png 將會(huì)被解釋成一個(gè)模塊依賴。它們會(huì)被一個(gè)基于你的Webpack輸出配置自動(dòng)生成的URL替代。沒有前綴的URL, e.g. assets/logo.png 將會(huì)被看成相對(duì)URL,并且轉(zhuǎn)換成./assets/logo.png
前綴帶~的URL 會(huì)被當(dāng)成模塊請(qǐng)求, 類似于require(‘some-module/image.png'). 如果你想要利用Webpack的模塊處理配置,就可以使用這個(gè)前綴。例如,如果你有一個(gè)對(duì)于assets的路徑解析,你需要使用 <img src="~assets/logo.png"> 來(lái)確保解析是對(duì)應(yīng)上的。相對(duì)根目錄的URL, e.g. /assets/logo.png 是不會(huì)被處理的
在 Javascript中獲取資源路徑
為了能讓W(xué)ebpack返回正確的資源路徑,你需要使用require(‘./relative/path/to/file.jpg'),由file-loader進(jìn)行解析,然后返回處理過的URL。例如:
computed: {
background () {
return require('./bgs/' + this.id + '.jpg')
}
}
注意上面的例子,在最終的構(gòu)建時(shí)將會(huì)包含./bgs/路徑下的所有圖片 這是因?yàn)閃ebpack不能猜出來(lái)在運(yùn)行時(shí)會(huì)用到其中的哪個(gè),所以會(huì)包含所有的。
“真實(shí)的” 靜態(tài)資源
作為對(duì)比,在static/下的文件都不會(huì)被Webpack處理:它們使用相同的文件名,直接拷貝到最終的路徑。你必須使用絕對(duì)路徑來(lái)引用這些文件,取決于在config.js里面加入的build.assetsPublicPath 和 build.assetsSubDirectory。
舉個(gè)例子,下面的默認(rèn)值是:
// config/index.js
module.exports = {
// ...
build: {
assetsPublicPath: '/',
assetsSubDirectory: 'static'
}
}
所有放在 static/目錄下的文件都應(yīng)該是使用絕對(duì)URL/static/[filename]引用的。如果你將assetSubDirectory的值改成assets, 那么這些URL就會(huì)被變成 /assets/[filename]
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue中使用 Echarts5.0 遇到的一些問題(vue-cli 下開發(fā))
這篇文章主要介紹了Vue中使用 Echarts5.0 遇到的一些問題(vue-cli 下開發(fā)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
關(guān)于vue-socket.io使用及版本原因消息無(wú)法監(jiān)聽bug
這篇文章主要介紹了關(guān)于vue-socket.io使用及版本原因消息無(wú)法監(jiān)聽bug,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
Vue 構(gòu)造選項(xiàng) - 進(jìn)階使用說(shuō)明
這篇文章主要介紹了Vue 構(gòu)造選項(xiàng) - 進(jìn)階使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-08-08
vue3動(dòng)態(tài)監(jiān)聽瀏覽器窗口變化實(shí)例
這篇文章主要給大家介紹了關(guān)于vue3動(dòng)態(tài)監(jiān)聽瀏覽器窗口變化的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-07-07
在vant 中使用cell組件 定義圖標(biāo)該圖片和位置操作
這篇文章主要介紹了在vant 中使用cell組件 定義圖標(biāo)該圖片和位置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-11-11
Vue3響應(yīng)式對(duì)象是如何實(shí)現(xiàn)的(2)
這篇文章主要介紹了Vue3響應(yīng)式對(duì)象是如何實(shí)現(xiàn)的,文章基于上篇文章展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08

