您好,登錄后才能下訂單哦!
這篇“vue3+vite assets動態引入圖片及解決打包后圖片路徑錯誤不顯示的方法”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“vue3+vite assets動態引入圖片及解決打包后圖片路徑錯誤不顯示的方法”文章吧。
vite 官方默認的配置,如果資源文件在assets文件夾打包后會把圖片名加上 hash值,但是直接通過 :src="imgSrc"方式引入并不會在打包的時候解析,導致開發環境可以正常引入,打包后卻不能顯示的問題
我們看到實際上我們不希望資源文件被wbpack編譯可以把圖片放到public 目錄會更省事,不管是開發環境還是生產環境,可以始終以根目錄保持圖片路徑的一致,這點跟webpack是一致的
看到這里,也許問題就解決了,如果在vite確實需要將靜態文件放在assets,我們再往下看:
這里我們先假設:
靜態文件目錄:src/assets/images/
我們的目標靜態文件在 src/assets/images/home/home_icon.png
<img :src="require('@/assets/images/home/home_icon.png')" />
嘗試過require動態引入, 發現報錯:require is not defind
,這是因為 require 是屬于 Webpack 的方法
import homeIcon from '@/assets/images/home/home_icon.png' <img :src="homeIcon" />
推薦,這種方式傳入的變量可以動態傳入文件路徑!!
靜態資源處理 | Vite 官方中文文檔
new URL() + import.meta.url
這里我們假設:
工具文件目錄: src/util/pub-use.ts
pub-use.ts
// 獲取assets靜態資源 export default const getAssetsFile = (url: string) => { return new URL(`../assets/images/${url}`, import.meta.url).href }
使用
import usePub from '@/util/public-use' setup () { const Pub = usePub() const getAssetsFile = Pub.getAssetsFile return { getAssetsFile } }
可以包含文件路徑
<img :src="getAssetsFile('/home/home_icon.png')" />
不推薦,這種方式引入的文件必須指定到具體文件夾路徑,傳入的變量中只能為文件名,不能包含文件路徑
使用vite的import.meta.glob
或import.meta.globEager
,兩者的區別是前者懶加載資源,后者直接引入。
這里我們假設:
工具文件目錄: src/util/pub-use.ts
pub-use.ts
// 獲取assets靜態資源 export default const getAssetsHomeFile = (url: string) => { const path = `../assets/images/home/${url}`; const modules = import.meta.globEager("../assets/images/home/*"); return modules[path].default; }
使用
import usePub from '@/util/public-use' setup () { const Pub = usePub() const getAssetsHomeFile = Pub.getAssetsHomeFile return { getAssetsHomeFile } }
不能包含文件路徑
<img :src="getAssetsHomeFile('home_icon.png')" />
.imgText { background-image: url('../../assets/images/1462466500644.jpg'); }
生產環境會自動加上hash,并且路徑正確
以下錯誤用法,使用絕對路徑在開發環境能夠正常顯示,但將導致打包后的路徑不正確
.imgText { background-image: url('src/assets/images/1462466500644.jpg'); }
生產環境資源404:
以上就是關于“vue3+vite assets動態引入圖片及解決打包后圖片路徑錯誤不顯示的方法”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。