vue-cli --- assets目錄和static目錄


在vue項目中發現有兩個存放靜態文件的文件夾,疑惑中。。。以下為整理的答案。

用vue-cli生成一個項目后,src目錄下的assets目錄和根目錄下的static目錄都是存放靜態文件的,那什么樣的靜態文件應該放在assets目錄,什么樣的靜態文件應該放在static目錄下呢?

assets里的文件編譯過程中會被webpack處理理解為模塊依賴,只支持相對路徑的形式。assets放可能會變動的文件;
static里的文件不會被webpack解析,會直接被復制到最終的打包(默認是dist/static)下,必須使用絕對路徑引用這些文件。static放不會變動的文件。

vue腳手架生成的項目目錄如下:

static與assets的區別:

首先需要了解Webpack如何處理靜態資產,在 *.vue 組件中,所有模板和CSS都會被 vue-html-loader 及 css-loader 解析,並查找資源URL。

例如,在 <img src="./logo.png">和 background: url(./logo.png) 中,"./logo.png" 是相對的資源路徑,將由Webpack解析為模塊依賴。因為 logo.png 不是js文件,當被視為模塊依賴時,需要使用 url-loader 和 file-loader處理它。vue-cli 的 webpack 腳手架已經配置了這些 loader,因此可以使用相對路徑。

由於這些資源可能在構建過程中被內聯/復制/重命名,所以它們基本上是源代碼的一部分。這就是為什么建議將Webpack 處理的靜態資源放在 /src 目錄中和其它源文件放一起的原因,即不必把它們全部放在 /src/assets目錄中,可以用組件的組織方式來使用它們,例如可以在每個放置組件的目錄中存放他們所用的靜態資源。

static
相比之下,static/ 目錄下的文件並不會被 Webpack 處理。它們會直接被復制到最終目錄(默認是dist/static)下,必須使用絕對路徑引用這些文件。這是通過在 config.js 文件中的 build.assetsPublicPath 和 build.assetsSubDirectory 連接來設置的。任何放在 static/ 中文件需要以絕對路徑的形式引用:/static/[filename]。如果更改 assetSubDirectory 的值為 assets,那么路徑需改為 /assets/[filename]。

 

 

 

原文:https://segmentfault.com/q/1010000016278478

https://blog.csdn.net/Fabulous1111/article/details/79388403


免責聲明!

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



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