在使用Vue處理專案時,遇到圖片路徑存放的問題
原本在使用html時很直覺,但是在webpack打包時就會出現一些小問題
圖片可以是相對路徑和絕對路徑兩種
Vue Cli 2.0
1.圖片引入絕對路徑
如果 URL 是一個絕對路徑 (例如 /images/logo.png),它將會被保留不變,指的是在打包時會當作字符串處理,保留地址不做任何的操作。
1 | 絕對路徑: 保留 |
2.圖片引入相對路徑
當你在 JavaScript、CSS 或 .vue 文件中使用相對路徑 (必須以 . 開頭) 引用一個靜態資源時,該資源將會被包含進入 webpack 的依賴圖中。
在其編譯過程中,所有諸如 <img src="...">
、background: url(...)
和 CSS @import 的資源 URL 都會被解析爲一個模塊依賴,本意就是webpack會對以上的方式做處理,那麼問題來了?如何處理?
如果是相對路徑的圖片,在圖片一定大小的範圍內,會轉化爲base64 和 打包文件(dist)目錄下生成一張圖片(它們將會被替換爲基於你Webpack輸出配置自動生成的 URL)兩種方式
這個大小的範圍是可以確定的,在vue.config.js文件中
手動修改文件打包生成的路徑,在webpack.base.config.js文件中,修改即可(其實在在vue.config.js文件 同樣上面的地方添加name屬性修改也是一樣的)
相對路徑 ./assets/login.png
- 模組依賴: webpack 自動生成路徑: base on output config
- 絕對路徑 /static/img/box.b7bc3af.png
無前綴 assets/login.png
- 相對路徑: 加上 ./
根目錄 /assets/login.png
- 還是根目錄
毛毛蟲 ~/asset/login.png
- 無前綴 assets/login.png
1 | background-image:url(/static/images/arrow_d.png); |
Vue Cli 3.0
Vue Cli 3 statci變爲public,裡面主要是存放靜態資源文件的
依據資料夾的階層出現路徑有可能為:
1 | background-image:url(/images/arrow_d.png); |