欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue頁面加載閃爍問題的解決方法

 更新時間:2018年03月28日 10:05:02   作者:在水伊人  
這篇文章主要介紹了vue頁面加載閃爍問題的解決方法,文中給大家提到了v-if 和 v-show 的區(qū)別,解決vue頁面加載時出現(xiàn){{message}}閃退的兩種方法,感興趣的朋友一起看看吧

v-if 和 v-show 的區(qū)別

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

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

使用場景

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

另外

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

    2.將v-show應(yīng)用在組件上時,因?yàn)橹噶畹膬?yōu)先級 v-else 會出現(xiàn)問題,解決辦法就是用另一個 v-show 替換 v-else

 // 錯誤
  <custom-component v-show="condition"></custom-component>
  <p v-else>這可能也是一個組件</p>
     // 正確做法
  <custom-component v-show="condition"></custom-component>
  <p v-show="!condition">這可能也是一個組件</p>

解決vue頁面加載時出現(xiàn){{message}}閃退

方法一:v-cloak

    v-cloak指令和css規(guī)則如[v-cloak]{display:none}一起用時,這個指令可以隱藏未編譯的Mustache標(biāo)簽直到實(shí)例準(zhǔn)備完畢。
    v-cloak 指令可以像css選擇器一樣綁定一套css樣式然后這套css會一直生效到實(shí)例編譯結(jié)束。

  eg:
    // <div> 不會顯示,直到編譯結(jié)束。
    [v-cloak]{
      display:none;
        }
    <div v-cloak>
       {{ message }}
    </div>

方法二:v-text

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

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

eg:
  <span v-text="message"></span>
  <!-- same as -->
  <span>{{message}}</span>

補(bǔ)充:

vue 頁面加載進(jìn)度條組件

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

但是從開發(fā)角度講,這種進(jìn)度條在真實(shí)性上確實(shí)很難把握,因?yàn)樵谶壿嫶a加載完成之前,我們都不能統(tǒng)計(jì)到進(jìn)度,而邏輯代碼自身的進(jìn)度也無法統(tǒng)計(jì)。另外,我們不可能監(jiān)控到所有資源的加載情況。

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

// progress-bar.vue
<template>
 <transition name="fade">
  <div class="progress-bar" v-if="isShow">
  </div>
 </transition>
</template>
<script type="text/babel">
 export default {
  data() {
   return {
    isShow: true, // 是否顯示進(jìn)度條
    val: 0, // 進(jìn)度
   }
  },
  props: {
   /**
    * 每10毫秒自增幅度
    */
   step: {
    type: Number,
    default: 5,
   },
   /**
    * 初始值
    */
   initVal: {
    type: Number,
    default: 0,
   },
   /**
    * 到一定進(jìn)度停止
    */
   stopVal: {
    type: Number,
    default: 80,
   },
   /**
    * 進(jìn)度條繼續(xù)到成功
    */
   isOk: {
    type: Boolean,
    default: false,
   },
  },
  mounted() {
   // 初始化后加載進(jìn)度,加載到百分之多少由stopVal決定
   this.val = this.initVal
   let step = this.step
   let timer = setInterval(() => {
    this.val = this.val + step
    this.$el.style.width = this.val + '%'
    // 父組件數(shù)據(jù)加載完前進(jìn)度條最多到stopVal的這個百分值
    if (this.val >= this.stopVal) {
     clearInterval(timer)
     return
    }
   }, 10)
  },
  watch: {
   /**
    * 監(jiān)聽組件props變化決定是否繼續(xù)加載,一般在父組件數(shù)據(jù)加載完后改變此標(biāo)志位
    */
   isOk() {
    let val = this.val
    let step = this.step
    let timer = setInterval(() => {
     val = val + step
     this.$el.style.width = val + '%'
     // 加載到百分百完成
     if (val >= 100) {
      // 關(guān)閉定時器
      clearInterval(timer)
      // 加載完成關(guān)閉進(jìn)度條
      this.isShow = false
      // 加載完成的回調(diào)
      this.$emit('callback', 'load success')
      return
     }
    }, 10)
   },
  },
 }
</script>
<style lang="stylus" rel="stylesheet/stylus">
 .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
  }
 }
</style>

總結(jié)

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

相關(guān)文章

  • Vue3 diff算法的簡單解刨

    Vue3 diff算法的簡單解刨

    如今Vue3的勢頭正盛,在diff算法方面也做了相應(yīng)的變化,利用到了最長遞增子序列把性能又提升了一個檔次。本文就來帶大家簡單解刨一下Vue3中的diff算法
    2023-02-02
  • Vue中為什么要引入render函數(shù)的實(shí)現(xiàn)

    Vue中為什么要引入render函數(shù)的實(shí)現(xiàn)

    本文主要介紹了Vue中為什么要引入render函數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • vue項(xiàng)目從node8.x升級到12.x后的問題解決

    vue項(xiàng)目從node8.x升級到12.x后的問題解決

    這篇文章主要介紹了vue項(xiàng)目從node8.x升級到12.x后的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Vue-router 切換組件頁面時進(jìn)入進(jìn)出動畫方法

    Vue-router 切換組件頁面時進(jìn)入進(jìn)出動畫方法

    今天小編就為大家分享一篇Vue-router 切換組件頁面時進(jìn)入進(jìn)出動畫方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue3封裝數(shù)字滾動組件的實(shí)現(xiàn)示例

    vue3封裝數(shù)字滾動組件的實(shí)現(xiàn)示例

    本文主要介紹了vue3封裝數(shù)字滾動組件的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Vue3項(xiàng)目的3種創(chuàng)建方式代碼示例

    Vue3項(xiàng)目的3種創(chuàng)建方式代碼示例

    使用VUE3開發(fā)很久了,但一直沒進(jìn)行總結(jié)和記錄,忙里偷閑整理搭建一套VUE3項(xiàng)目,正好記錄一下,這篇文章主要給大家介紹了關(guān)于Vue3項(xiàng)目的3種創(chuàng)建方式,需要的朋友可以參考下
    2024-03-03
  • 在Vue 中實(shí)現(xiàn)循環(huán)渲染多個相同echarts圖表

    在Vue 中實(shí)現(xiàn)循環(huán)渲染多個相同echarts圖表

    這篇文章主要介紹了在Vue 中實(shí)現(xiàn)循環(huán)渲染多個相同echarts圖表,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue 使用lodash實(shí)現(xiàn)對象數(shù)組深拷貝操作

    vue 使用lodash實(shí)現(xiàn)對象數(shù)組深拷貝操作

    這篇文章主要介紹了vue 使用lodash實(shí)現(xiàn)對象數(shù)組深拷貝操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue+Java+Base64實(shí)現(xiàn)條碼解析的示例

    Vue+Java+Base64實(shí)現(xiàn)條碼解析的示例

    這篇文章主要介紹了Vue+Java+Base64實(shí)現(xiàn)條碼解析的示例,幫助大家實(shí)現(xiàn)條碼解析,感興趣的朋友可以了解下
    2020-09-09
  • 一篇文章帶你搞懂VUE基礎(chǔ)知識

    一篇文章帶你搞懂VUE基礎(chǔ)知識

    這篇文章主要介紹了vue 組件基礎(chǔ)知識的相關(guān)資料,幫助大家更好的理解和使用vue的組件,感興趣的朋友可以了解下
    2021-11-11

最新評論