詳解Vue.js中引入圖片路徑的幾種方式
vue --version 3.6.3
記錄總結(jié)一下的Vue中引入圖片路徑的幾種書寫方式
vue中靜態(tài)資源的引入機(jī)制
Vue.js關(guān)于靜態(tài)資源的 官方文檔
靜態(tài)資源可以通過(guò)兩種方式進(jìn)行處理:
在 JavaScript 被導(dǎo)入或在 template/CSS 中通過(guò)相對(duì)路徑(以 . 開頭)被引用。這類引用會(huì)被 webpack 處理。
- 諸如 <img src="..."> 、 background: url(...) 和 CSS @import 的資源
- 例如, url(./image.png) 會(huì)被翻譯為 require('./image.png')
放置在 public 目錄下或通過(guò)絕對(duì)路徑被引用。這類資源將會(huì)直接被拷貝,而不會(huì)經(jīng)過(guò) webpack 的處理,你需要通過(guò)絕對(duì)路徑來(lái)引用它們。
- 如果 URL 是一個(gè)絕對(duì)路徑,例如 /images/foo.png ,它將會(huì)被保留不變。
目錄結(jié)構(gòu):
vue-path/ ----- public/ -------- images/ ------------ XX.jpg ----- src/ -------- assets/ ------------ images/ ---------------- XX.jpg -------- App.vue ...
引入示例
App.vue :
1、√
<img src="./assets/images/01.jpg" alt=""> // √ // 編譯后: <img src="/img/01.f0cfc21d.jpg" alt="">
常見(jiàn)的引入方式,路徑是固定的字符串,圖片會(huì)被webpack處理,文件若丟失會(huì)直接在編譯時(shí)報(bào)錯(cuò),生成的文件包含了哈希值
2、×
<img :src="'./assets/images/02.jpg'" alt=""> // × // 編譯后: <img src="./assets/images/02.jpg" alt="">
錯(cuò)誤的引入方式,使用 :src 調(diào)用了 v-bind 指令處理其內(nèi)容,相對(duì)路徑不會(huì)被webpack的 file-loader 處理
3、√
<img :src="require('./assets/images/03.jpg')" alt=""> // √ <img :src="require('./assets/images/'+ this.imgName +'.jpg')" alt=""> // √ <img :src="img3" alt=""> // √ <script> export default:{ data(){ return { imgName:'03.jpg', img3:require('./assets/images/03.jpg'), } }, } </script> // 編譯后: <img src="/img/03.ea62525c.jpg" alt="">
當(dāng)路徑的文件名需要拼接變量的時(shí)候,可使用 require() 引入,在 template 的 :src 或者 script 的 data computed 中都可以進(jìn)行 require 引入或拼接
4、≈
<img src="/images/04.jpg" alt=""> // - // 編譯后: <img src="/images/04.jpg" alt="">
用絕對(duì)路徑引入時(shí),路徑讀取的是public文件夾中的資源,任何放置在 public 文件夾的靜態(tài)資源都會(huì)被簡(jiǎn)單的復(fù)制到編譯后的目錄中,而不經(jīng)過(guò) webpack特殊處理。
當(dāng)你的應(yīng)用被部署在一個(gè)域名的根路徑上時(shí),比如 http://www.abc.com/ ,此時(shí)這種引入方式可以正常顯示
但是如果你的應(yīng)用沒(méi)有部署在域名的根部,那么你需要為你的 URL 配置 publicPath 前綴
publicPath 是部署應(yīng)用包時(shí)的基本 URL,在 vue.config.js 中進(jìn)行配置,詳情參閱 官方文檔
5、√
<img :src="this.publicPath + 'images/05.jpg'" alt=""> // √ // 編譯后: <img src="/foo/images/05.jpg" alt=""> <script> export default:{ data(){ return { publicPath: process.env.BASE_URL, } }, } </script>
vue.config.js中:
//vue.config.js module.exports = { publicPath:'/foo/', ... }
引入publicPath并且將其拼接在路徑中,實(shí)現(xiàn)引入路徑的動(dòng)態(tài)變動(dòng)
reference
https://cli.vuejs.org/zh/guide/html-and-static-assets.html#處理靜態(tài)資源
https://cli.vuejs.org/zh/config/#publicpath
http://www.dbjr.com.cn/article/124718.htm
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在vue react中如何使用Web Components組件
這篇文章主要介紹了在vue react中如何使用Web Components組件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05在Vue當(dāng)中同時(shí)配置多個(gè)路由文件的方法案例代碼
這篇文章主要介紹了在Vue當(dāng)中同時(shí)配置多個(gè)路由文件的方法,包含具體代碼,本文分步驟結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12Vue中金額、日期格式化插件@formatjs/intl的使用及說(shuō)明
這篇文章主要介紹了Vue中金額、日期格式化插件@formatjs/intl的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02構(gòu)建大型 Vue.js 項(xiàng)目的10條建議(小結(jié))
這篇文章主要介紹了構(gòu)建大型 Vue.js 項(xiàng)目的10條建議(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Ant Design Vue全局對(duì)話確認(rèn)框(confirm)的回調(diào)不觸發(fā)
這篇文章主要介紹了Ant Design Vue全局對(duì)話確認(rèn)框(confirm)的回調(diào)不觸發(fā)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07