Vue3+Vite中不支持require的方式引入本地圖片的解決方案
Vue3+Vite中不支持require的方式引入本地圖片
使用vue2+webpack的時候是用require引入圖片
require(`../assets/${img}.png`)
但是vue3+vite這么寫就報錯:
require is not define
原因是require是webpack的方法,vite找不到對應的圖片路徑,需要使用下面的方式進行處理。
詳細見官網解釋:
靜態(tài)資源處理 {#static-asset-handling} | Vite中文網
使用vite也有兩種引入靜態(tài)文件方法:
第一種
import imageIcon from "../assets/image.png"; <img class="patient" :src="imageIcon" />
第二種
import.meta.url 是一個 ESM 的原生功能,會暴露當前模塊的 URL。
將它與原生的 URL 構造器 組合使用,在一個 JavaScript 模塊中,通過相對路徑我們就能得到一個被完整解析的靜態(tài)資源 URL。
const url = new URL('靜態(tài)路徑', import.meta.url).href
第一個參數即圖片的路徑,這里就是對應require中的值。
第二個參數是vite的一個全局變量,可以理解成直接寫死了 import.meta.url
使用示例:
<img :src="index !== clickIndex ? downImg : upImg"> // 導入兩張圖片 const downImg = new URL('../../assets/index/down.png', import.meta.url).href const upImg = new URL('../../assets/index/up.png', import.meta.url).href
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。