vue css 引入asstes中的圖片無法顯示的四種解決方法
這裡主要針對的是vuecli2中的一些問題。
vue專案中,常常會有很多的圖片資源,這樣的資源存放位置,通常我們有兩個選擇:1. static,2. assets
關於這兩者之間的區別,和如何選擇這裡就不多說了!
這裡我們來說說assets目錄下存放圖片時,在vue元件的css樣式中引入圖片時將會遇到的一些問題!
正常情況,我們在本地開發除錯的時候,無論什麼樣的方式引入圖片都不會有問題。但是,一大包釋出打線上,就會出現圖片無法載入的情況!
這是因為,出於某些原因,有人修改了config目錄下的index.js檔案中的build物件中assetsPublicPath的值,這個值初始化的時候是 斜杆(/),代表資源根目錄,也就是dist目錄下與index.html檔案同級。
所以:
第一種方法
修復的方法就是把這個值改回預設值:/
打包出來的結果: css檔案中background屬性
index.html中的js和css檔案
第二種方法
還是修改這個值斜槓代表的是根目錄,我們換種思路,是不是可以把這裡該為絕對地址呢?答案肯定是可以的具體怎麼改呢?舉個例子,比如我的線上的專案的地址是:http://www.test.com,我們只需要吧之前的斜槓替換成這個地址就可以了,如圖:
打包出來的結果: css檔案中background屬性
index.html中的js和css檔案
第三種方法
上面也說了,可能由於某些原因我們修改了這個值,為了不影響原有的功能,也是避免造成別新的bug,我們不能修改這個值,所以我們有了第三種方法。修改build目錄中的uitls檔案中的css打包配置,開啟utils.js檔案直接搜尋 ExtractTextPlugin.extract 然後在物件中新增屬性 publicPath: ‘…/…/' 具體如圖:
這裡的層級(publicPath: ‘…/…/' )具體看你打包後的目錄結構,我這裡的層級如下圖,各自根據自己的情況確定
這個時候打包出來的路徑,根據你的assetsPublicPath配置而定了,這裡就不舉例了,執行檢視是否打包正常。
第四種方法
前面三種方案都是說的老專案,已經大量的圖片引入,沒有辦法了。但是若果圖片資源不多,或者是新專案,這個時候的話不需要這麼麻煩去改打包配置。我們可以從一開始就避免這個問題。對於html中的img標籤我們可以通過import的方式先把圖片引入,然後放到data中,在繫結到src上。
import logo from "../assets/logo.png"; data() { return { logo, }; },
<img :src="logo" width="78" height="78" alt="logo">
css中的路徑我們可以通過@來引入(@等價於src目錄)比如:
background: url("@/assets/logo.png") no-repeat;
又或者,直接不要放到asstes目錄下,也可以避免這個問題發生。
總結
到此這篇關於vue css 引入asstes中的圖片無法顯示的四種解決方法的文章就介紹到這了,更多相關vue css 引入asstes 圖片內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!