在Vue頁面中如何更優(yōu)雅地引入圖片詳解
在我們寫vue項(xiàng)目中肯定會(huì)用到各種圖片,那么如何更好的使用圖片資源呢。這里我講一下我常用的方法。
錯(cuò)誤示范
也許你的代碼里常常會(huì)這樣寫
<template> <img :src="src"> </template> <script> export default{ data(){ return { src: require('xxx.jpg') } } } </script>
在webpack中,require會(huì)自動(dòng)處理資源,這塊沒問題,但是你放到vue的data里,vue會(huì)遍歷data,給src加上響應(yīng)式,但其實(shí)大部分時(shí)間,這個(gè)src并不需要響應(yīng)式,這里造成了性能浪費(fèi)。
通過computed
解決上面這個(gè)錯(cuò)誤方案,解決的方案之一:computed
<template> <img :src="src"> </template> <script> const src = require('xxx.jpg') export default{ computed:{ src(){ return src } } } </script>
computed本身就有緩存,可以減少一些性能浪費(fèi)
當(dāng)圖片不變的時(shí)候直接引入
<template> <img :src="src"> </template>
或者
<template> <div class="bg"></div> </template> <style> .bg{ background:url("xxx.jpg") } </style>
當(dāng)我們這個(gè)圖片不會(huì)變化的時(shí)候,可以直接引入,并不需要賦值一個(gè)變量。
同樣,也可通過切換class名去動(dòng)態(tài)顯示圖片,這樣也比較好
<template> <div :class="flag ? 'bg1':'bg2'"></div> </template> <script> export default{ data(){ return { flag: true } } } </script> <style> .bg1{ background:url("xxx1.jpg") } .bg2{ background:url("xxx2.jpg") } </style>
通過css變量切換圖片
這個(gè)只是我剛剛想起來的一個(gè)想法,理論上css變量可以存儲任何東西,那能否存放圖片地址呢。
<template> <div class="bg"></div> </template> <script> export default{ mounted(){ // 第一種方法,圖片地址或base64 this.$el.style.setProperty('--bg',`url("http://xxx.com/1.jpg")`) // 第二種方法 this.$el.style.setProperty('--bg',`url("${require('../assets/1.png')}")`) } } </script> <style> .bg{ --bg:url('xxx.jpg'); background-image:--bg; } </style>
個(gè)人測試成功,這個(gè)方法也可用,而且會(huì)比computed更好些,畢竟操作css變量開銷更小。這個(gè)方法需要注意的是,css中圖片一般都是寫在url中的,因此需要拼接一個(gè)字符串url(你的內(nèi)容)。
通過css繪制
這個(gè)其實(shí)算一個(gè)題外話,有的時(shí)候一些圖像其實(shí)是可以通過css畫出來的,例如下圖中這個(gè)三角,大家百度一下就會(huì)有各種css三角生成器,這種圖形用css會(huì)比引入一個(gè)圖片更好。
總結(jié)一下,就是不要在vue的data中引入圖片,還是盡量使用css
總結(jié)
到此這篇關(guān)于在Vue頁面中如何更優(yōu)雅地引入圖片的文章就介紹到這了,更多相關(guān)Vue更優(yōu)雅引入圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一篇文章教你實(shí)現(xiàn)VUE多個(gè)DIV,button綁定回車事件
這篇文章主要介紹了VUE多個(gè)DIV綁定回車事件,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-10-10vue項(xiàng)目如何配置public靜態(tài)資源路徑訪問
這篇文章主要介紹了vue項(xiàng)目如何配置public靜態(tài)資源路徑訪問方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11詳解如何在vue項(xiàng)目中引入elementUI組件
這篇文章主要介紹了詳解如何在vue項(xiàng)目中引入elementUI組件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02vue緩存之keep-alive的理解和應(yīng)用詳解
這篇文章主要介紹了vue緩存之keep-alive的理解和應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Vue?3?使用moment設(shè)置顯示時(shí)間格式的問題及解決方法
在Vue?3中,因?yàn)檫^濾器(filter)已經(jīng)被廢棄,取而代之的是全局方法(global?method),本文給大家介紹Vue?3?使用moment設(shè)置顯示時(shí)間格式的問題及解決方法,感興趣的朋友一起看看吧2023-12-12vue項(xiàng)目出現(xiàn)ERESOLVE could not resolve問題及解決
這篇文章主要介紹了vue項(xiàng)目出現(xiàn)ERESOLVE could not resolve問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10Vue組件教程之Toast(Vue.extend 方式)詳解
這篇文章主要給大家介紹了關(guān)于Vue組件教程之Toast(Vue.extend 方式)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01