前言:
對於非靜態的文件,如js,當webpack打包時,會被直接打到模塊文件中,如main.js,若是修改了,須要再次編譯
而對於靜態文件,如jpg,svg等,咱們不但願webpack去打包,只須要在build完後,直接放到dist下的某個路徑下便可,隨時能夠修改,並不須要再次編譯webpack
首先,看一段很熟悉的webpack配置ios
{ 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.jpgweb
那麼咱們如何在組件中引入靜態資源呢?
有兩張方式:
一、在組件最上方,使用import導入axios
import b from "@/assets/image/a.jpg" //此時 b 的值爲 static/media/a.jpg
在組件中markdown
<img src={b}/>
二、使用require導入
若是不在組件上方使用import導入,而是在組件中的任意位置使用時,可經過require引入svg
<img src={require("@/assets/image/a.jpg")}> //此時require("@/assets/image/a.jpg")的值就是static/media/a.jpg
那麼同理,若是想讓markdown等其餘文件,也成爲靜態資源。
第一步:ui
{ test: [/\.md/], loader: require.resolve('url-loader'), options: { limit: 10, //能夠設置小點 name: 'static/media/[name].[ext]', }, }
第二步:url
//md文件和jpg不一樣,咱們須要的最終是md文件的內容,不是url axios.get(require("@/assets/image/map.md")).then(res=>{ //res.data 就是內容 })
而後部署上去後,若是後期咱們須要對map.md作修改,則直接修改static/media/map.md文件就好了,直接生效,不須要再次編譯code