溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Vue-cli中靜態(tài)資源管理src/assets和static/的區(qū)別是什么

發(fā)布時(shí)間:2021-07-22 15:57:29 來源:億速云 閱讀:164 作者:小新 欄目:web開發(fā)

這篇文章主要介紹Vue-cli中靜態(tài)資源管理src/assets和static/的區(qū)別是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

資源打包

為了回答這個(gè)問題,我們需要了解webpack是如何處理靜態(tài)資源的。在所有的*.vue文件中你所有的templates 和CSS 都被vue-html-loader 和css-loader 查詢資源的URLs解析. 比如說, 在 img src=”./logo.png” 和background: url(./logo.png) 中./logo.png是一個(gè)相對(duì)資源路徑,并且會(huì)被Webpack視為一個(gè)模塊依賴來解析。

因?yàn)?/logo.png并非一個(gè)Javascript,當(dāng)將它作為模塊依賴對(duì)待時(shí),我們需要用url-loader和file-loader去處理它。這種公式化處理早已經(jīng)為你配置了loader,所以你基本上可以獲得諸如文件名指紋和有條件的內(nèi)嵌base64,因此你能夠使用相對(duì)/模塊路徑而不必?fù)?dān)心部署問題。

自從這些資源可以在build期間被內(nèi)聯(lián)/復(fù)制/重命名,它們本質(zhì)上來講是你資源代碼的一部分。這就是為什么它們被推薦用于延源資源替換Webpack-processed的內(nèi)部/src資源。事實(shí)上,你甚至不必將它們放進(jìn)/src/assets:你可以基于模塊/組件去組織它們并使用,你可以將每一個(gè)組件放進(jìn)他們自己的文件夾,隨著它的靜態(tài)文件正確的緊挨著它。

資源決定規(guī)則

  1. 相對(duì)URLs, 例如 ./assets/logo.png 將會(huì)被解釋為一個(gè)模塊依賴. 它們將會(huì)被替換為基于你Webpack輸出配置自動(dòng)生成的 URL

  2. 無前綴URLs, 例如. assets/logo.png 將會(huì)被像相對(duì)URLs一樣處理并將被轉(zhuǎn)化為 ./assets/logo.png.

  3. 帶~前綴的URLs 將會(huì)被看做模塊請(qǐng)求, 類似于請(qǐng)求(‘some-module/image.png'). 如果你想改變Webpack的模塊解決配置你需要使用這個(gè)前綴 。例如,你需要處理資源的別名,你需要使用 ~assets/logo.png去確保這個(gè)別名時(shí)受到重視的.

  4. 特權(quán)相對(duì)URLs, 例如 /assets/logo.png 是完全不作處理的.

在Javascript中獲取資源路徑

為了使Webpack可以正確返回資源路徑, 你需要使用 require(‘./relative/path/to/file.jpg'), 它將會(huì)被file-loader處理 and returns并返回處理過的URL. 例如:

computed: {
 background () {
 return require('./bgs/' + this.id + '.jpg')
 }
}

注意上例將會(huì)包含每個(gè)在最后一次build中的./bgs/ 下的圖片。 這是由于 Webpack 無法推測它們哪個(gè)會(huì)在運(yùn)行時(shí)被使用, 因此會(huì)包含所有圖片.

“真正”的靜態(tài)資源

對(duì)比而言, static/ 中的文件是完全不被Webpack處理的,它們被以相同的文件名直接被復(fù)制進(jìn)最終目標(biāo)as-is.你務(wù)必要使用絕對(duì)路徑去引用它們.這是由config.js加入build.assetspublicpath和build.assetssubdirectory確定。

如下是一個(gè)含默認(rèn)值得例子:

// config/index.js
module.exports = {
 // ...
 build: {
 assetsPublicPath: '/',
 assetsSubDirectory: 'static'
 }
}

任何在 static/ 中的文件都需要被使用絕對(duì)路徑 /static/[filename]來引用. 如果你改變assetSubDirectory 為assets, 那么這些 URLs將需要被替換為 /assets/[filename].

以上是“Vue-cli中靜態(tài)資源管理src/assets和static/的區(qū)別是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

vue
AI