您好,登錄后才能下訂單哦!
前言:
對于非靜態的文件,如js,當webpack打包時,會被直接打到模塊文件中,如main.js,如果修改了,需要再次編譯
而對于靜態文件,如jpg,svg等,我們不希望webpack去打包,只需要在build完后,直接放到dist下的某個路徑下即可,隨時可以修改,并不需要再次編譯
首先,看一段很熟悉的webpack配置
{ test: [/\.jpg/], loader: require.resolve('url-loader'), options: { limit: 10000, name: 'static/media/[name].[ext]', }, }
它表明,在解析jpg文件時,只需要提供一個url即可,bytes小于10000的轉為base64。 此url為static/media/xxx.jpg。
注意:此處的url已經不是 項目文件夾結構的那個url(如src/assets/image/xxx.jpg), 而是 static/media/xxx.jpg,當編譯后,dist/static/media中會出現 xxx.jpg
那么我們如何在組件中引入靜態資源呢?
有兩張方式:
1、在組件最上方,使用import導入
import b from "@/assets/image/a.jpg" //此時 b 的值為 static/media/a.jpg
在組件中
<img src={b}/>
2、使用require導入
如果不在組件上方使用import導入,而是在組件中的任意位置使用時,可通過require引入
<img src={require("@/assets/image/a.jpg")}> //此時require("@/assets/image/a.jpg")的值就是static/media/a.jpg
那么同理,如果想讓markdown等其他文件,也成為靜態資源。
第一步:
{ test: [/\.md/], loader: require.resolve('url-loader'), options: { limit: 10, //可以設置小點 name: 'static/media/[name].[ext]', }, }
第二步:
//md文件和jpg不同,我們需要的最終是md文件的內容,不是url axios.get(require("@/assets/image/map.md")).then(res=>{ //res.data 就是內容 })
然后部署上去后,如果后期我們需要對map.md做修改,則直接修改static/media/map.md文件就行了,直接生效,不需要再次編譯
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。