vue+webpack靜態資源路徑引用


處理靜態資產

    你可能已經注意到,在項目結構中我們有兩個靜態資產目錄:src/assetsstatic/他們之間有什么區別?

    要回答這個問題,我們首先需要了解Webpack如何處理靜態資產。在*.vue組件中,您的所有模板和CSS都會被解析vue-html-loadercss-loader查找資產URL。例如,在<img src="./logo.png">和中background: url(./logo.png)"./logo.png"是一個相對資產路徑,將由Webpack解析為模塊依賴項。

    因為logo.png不是JavaScript,當被視為模塊依賴時,我們需要使用url-loaderfile-loader處理它。此模板已經為您配置了這些加載器,因此您可以免費獲得文件名指紋識別和條件base64內聯等功能,同時可以使用相對/模塊路徑而無需擔心部署。

    由於這些資產可能在構建期間內聯/復制/重命名,因此它們本質上是源代碼的一部分。這就是為什么建議將Webpack處理的靜態資源放在/src其他源文件中。實際上,您甚至不需要全部放入/src/assets:您可以使用它們基於模塊/組件來組織它們。例如,您可以將每個組件放在其自己的目錄中,其靜態資源就在它旁邊。

 

“真正的”靜態資產

    相比之下,static/Webpack根本不處理文件:它們按原樣直接復制到最終目標,文件名相同。必須使用絕對路徑引用這些文件,絕對路徑由join build.assetsPublicPathbuild.assetsSubDirectoryin 確定config.js

    例如,使用以下默認值:

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

    放入的任何文件static/都應使用絕對URL引用/static/[filename]

    注意:如果更改assetSubDirectoryassets,則需要將這些URL更改為/assets/[filename]

 

應用:

    在src/components/ele.vue中,data數據里引入文件數據

imgsUrl:[
          {src:'../static/imgs/02.jpg'},
          {src:'./static/imgs/03.jpg'},
          {src:'http://www.pptok.com/wp-content/uploads/2012/08/xunguang-4.jpg'}
     ]

    第一行為相對路徑,第二行為使用絕對URL引用./static/[filename],第三行為網上圖片路徑。

    建議做法為:絕對URL引用./static/[filename]

 

補充:

    在原來的絕對URL引用/static/[filename]基礎上,在最之前添加了一個點.,因為vue項目打包后,如果不加.,無法正確獲取圖片等靜態資源路徑。

 

 

.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM