日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue 页面闪烁的问题_vue页面加载闪烁问题的解决方法

發布時間:2025/3/15 vue 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue 页面闪烁的问题_vue页面加载闪烁问题的解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

v-if 和 v-show 的區別

v-if只會在滿足條件時才會編譯,而v-show不管是否滿足條件始終會編譯,v-show的顯示與隱藏只是簡單的切換CSS的display屬性。

也就是說,在使用v-if時,若值為false,那么頁面將不會有這個html標簽生成。而v-show:不論其值是false還是true,html元素都會存在,只是簡單的切換css的display屬性。

使用場景

一般來說,v-if 有更高的切換消耗而 v-show 有更高的初始渲染消耗。因此,如果需要頻繁切換 v-show 較好,如果在運行時條件不大可能改變 v-if 較好。

另外

1.v-if 指令可以應用于template包裝元素上,而v-show不支持template

2.將v-show應用在組件上時,因為指令的優先級 v-else 會出現問題,解決辦法就是用另一個 v-show 替換 v-else

// 錯誤

這可能也是一個組件

// 正確做法

這可能也是一個組件

解決vue頁面加載時出現{{message}}閃退

方法一:v-cloak

v-cloak指令和css規則如[v-cloak]{display:none}一起用時,這個指令可以隱藏未編譯的Mustache標簽直到實例準備完畢。

v-cloak 指令可以像css選擇器一樣綁定一套css樣式然后這套css會一直生效到實例編譯結束。

eg:

//

不會顯示,直到編譯結束。

[v-cloak]{

display:none;

}

{{ message }}

方法二:v-text

vue中我們會將數據包在兩個大括號中,然后放到HTML里,但是在vue內部,所有的雙括號會被編譯成textNode的一個v-text指令。

而使用v-text的好處就是永遠更好的性能,更重要的是可以避免FOUC (Flash of Uncompiled Content) ,也就是上面與遇到的問題。

eg:

{{message}}

補充:

vue 頁面加載進度條組件

頁面加載進度條最初我是在youtube上看到的,后面幾乎在各大網站上都能見到它的身影,可以讓用戶在加載頁面的時候不會對著完全空白的頁面發呆,提升用戶體驗

但是從開發角度講,這種進度條在真實性上確實很難把握,因為在邏輯代碼加載完成之前,我們都不能統計到進度,而邏輯代碼自身的進度也無法統計。另外,我們不可能監控到所有資源的加載情況。

事實上,用戶并不是在乎你的頁面究竟加載了百分之幾,而真正關心的是離加載完還有多久,以及這個空白頁面是沒有加載完,還是加載完就是空白的。所以沒我們需要去“模擬”一個進度條,在后端數據返回前利用一個假的動畫效果模擬加載,在數據返回后讀完進度條并且隱藏。

// progress-bar.vue

export default {

data() {

return {

isShow: true, // 是否顯示進度條

val: 0, // 進度

}

},

props: {

/**

* 每10毫秒自增幅度

*/

step: {

type: Number,

default: 5,

},

/**

* 初始值

*/

initVal: {

type: Number,

default: 0,

},

/**

* 到一定進度停止

*/

stopVal: {

type: Number,

default: 80,

},

/**

* 進度條繼續到成功

*/

isOk: {

type: Boolean,

default: false,

},

},

mounted() {

// 初始化后加載進度,加載到百分之多少由stopVal決定

this.val = this.initVal

let step = this.step

let timer = setInterval(() => {

this.val = this.val + step

this.$el.style.width = this.val + '%'

// 父組件數據加載完前進度條最多到stopVal的這個百分值

if (this.val >= this.stopVal) {

clearInterval(timer)

return

}

}, 10)

},

watch: {

/**

* 監聽組件props變化決定是否繼續加載,一般在父組件數據加載完后改變此標志位

*/

isOk() {

let val = this.val

let step = this.step

let timer = setInterval(() => {

val = val + step

this.$el.style.width = val + '%'

// 加載到百分百完成

if (val >= 100) {

// 關閉定時器

clearInterval(timer)

// 加載完成關閉進度條

this.isShow = false

// 加載完成的回調

this.$emit('callback', 'load success')

return

}

}, 10)

},

},

}

.progress-bar {

position fixed

top 0

height 6px

width 0

background-color #999

}

.fade {

&-enter-active, &-leave-active {

transition: all .3s

}

&-enter, &-leave-active {

opacity: 0

}

}

總結

以上所述是小編給大家介紹的vue頁面加載閃爍問題的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對我們網站的支持!

本文標題: vue頁面加載閃爍問題的解決方法

本文地址: http://www.cppcns.com/ruanjian/java/224120.html

總結

以上是生活随笔為你收集整理的vue 页面闪烁的问题_vue页面加载闪烁问题的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。