中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • vue3+vite?assets動態引入圖片及解決打包后圖片路徑錯誤不顯示的方法

vue3+vite?assets動態引入圖片及解決打包后圖片路徑錯誤不顯示的方法

發布時間:2023-03-20 10:28:15 來源:億速云 閱讀:463 作者:iii 欄目:開發技術

這篇“vue3+vite assets動態引入圖片及解決打包后圖片路徑錯誤不顯示的方法”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“vue3+vite assets動態引入圖片及解決打包后圖片路徑錯誤不顯示的方法”文章吧。

vite 官方默認的配置,如果資源文件在assets文件夾打包后會把圖片名加上 hash值,但是直接通過 :src="imgSrc"方式引入并不會在打包的時候解析,導致開發環境可以正常引入,打包后卻不能顯示的問題

我們看到實際上我們不希望資源文件被wbpack編譯可以把圖片放到public 目錄會更省事,不管是開發環境還是生產環境,可以始終以根目錄保持圖片路徑的一致,這點跟webpack是一致的

vue3+vite?assets動態引入圖片及解決打包后圖片路徑錯誤不顯示的方法

看到這里,也許問題就解決了,如果在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.globimport.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,并且路徑正確

vue3+vite?assets動態引入圖片及解決打包后圖片路徑錯誤不顯示的方法

以下錯誤用法,使用絕對路徑在開發環境能夠正常顯示,但將導致打包后的路徑不正確

.imgText {
  background-image: url('src/assets/images/1462466500644.jpg');
}

生產環境資源404:

vue3+vite?assets動態引入圖片及解決打包后圖片路徑錯誤不顯示的方法

以上就是關于“vue3+vite assets動態引入圖片及解決打包后圖片路徑錯誤不顯示的方法”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桦甸市| 乃东县| 庆云县| 贵定县| 嵩明县| 炎陵县| 高雄市| 甘洛县| 青田县| 彭阳县| 青州市| 收藏| 中牟县| 抚顺县| 修武县| 石家庄市| 建阳市| 汕头市| 白玉县| 洛扎县| 漾濞| 千阳县| 浑源县| 阜新| 昌都县| 西安市| 永胜县| 新郑市| 义乌市| 阿拉尔市| 青河县| 海阳市| 和林格尔县| 通道| 通城县| 宁城县| 麻栗坡县| 建瓯市| 定边县| 开封县| 罗江县|