前言:
vue-cli在創建項目的時候, 會創建兩個存放靜態文件的目錄,
1. src/assets
2. /static
這兩個文件夾在項目中的作用和區別是什么, 我們今天就來看一下
靜態資源處理:
assets和static文件夾的區別
assets目錄中的文件會被webpack處理解析為模塊依賴,只支持相對路徑形式。例如,在 <img src="./logo.png">
和 background: url(./logo.png)
中,"./logo.png" 是相對的資源路徑,將由Webpack解析為模塊依賴。
static/ 目錄下的文件並不會被Webpack處理:它們會直接被復制到最終的打包目錄(默認是dist/static)下。必須使用絕對路徑引用這些文件,這是通過在 config.js 文件中的 build.assetsPublicPath 和 build.assetsSubDirectory 連接來確定的。
任何放在 static/ 中文件需要以絕對路徑的形式引用:/static/[filename]。
在我們實際的開發中,總的來說:static放不會變動的文件 assets放可能會變動的文件。
在js數據中如何引用圖片
因為webpack會將圖片當做模塊來引用,所以在js中需要使用require將圖片引用進來,不能直接以字符串的形式。
#模板js中的獲取圖片的方法 data () { return { imgUrl: '圖片地址',//錯誤寫法 imgUrl: require('圖片地址')//正確的寫法 } }
#template部分:
#img標簽形式: <img :src="img" />
#div背景圖形式: <div :style="{backgroundImage: 'url(' + img + ')'}"></div>
#<style>
webpack不會對style標簽的內容去簡析.所用不能在style標簽里面使用
只是穿插:
說到圖片正好提一下vue-cli的一個圖片有關的配置,下圖這個配置的意思是:在10000b 的圖片以下進行base64轉換,所以如果項目中有些比較小的icon就不用再進行圖片精靈的處理了
webpack+vue自定義路徑別名
vue-cli 用的是webpack,也可以使用webpack自定義別名這個功能,自定義別名這個功能當你在多層文件夾嵌套的時候不必一層一層找路徑,直接使用自定義別名就可以找到文件的位置。
設置方法:
設置地址:build文件夾下面的webpack.base.conf.js文件
具體設置:
resolve: { extensions: ['.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), 'static':path.resolve(__dirname, '../static'),//增加這一行代碼 } },
使用方式:
使用的時候要像下方截圖的B處一樣前面要加上一個'~',這里的webstorm雖然提示報錯,我們可以不用管,代碼運行是正常的。
解讀:
這里給’static’賦予了一個地址,那么在程序中引入路徑的時候’~static’就直接可以代替路徑’../static’,親測,這里就算多層嵌套也可以成功找到路徑。
后記
參考:https://juejin.im/post/59be4d325188257e764c8485