最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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標簽生成。而v-show:不論其值是false還是true,html元素都會存在,只是簡單的切換css的display屬性。

使用場景

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

另外

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

    2.將v-show應(yīng)用在組件上時,因為指令的優(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標簽直到實例準備完畢。
    v-cloak 指令可以像css選擇器一樣綁定一套css樣式然后這套css會一直生效到實例編譯結(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的好處就是永遠更好的性能,更重要的是可以避免FOUC (Flash of Uncompiled Content) ,也就是上面與遇到的問題。

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

補充:

vue 頁面加載進度條組件

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

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

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

// 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, // 是否顯示進度條
    val: 0, // 進度
   }
  },
  props: {
   /**
    * 每10毫秒自增幅度
    */
   step: {
    type: Number,
    default: 5,
   },
   /**
    * 初始值
    */
   initVal: {
    type: Number,
    default: 0,
   },
   /**
    * 到一定進度停止
    */
   stopVal: {
    type: Number,
    default: 80,
   },
   /**
    * 進度條繼續(xù)到成功
    */
   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 + '%'
    // 父組件數(shù)據(jù)加載完前進度條最多到stopVal的這個百分值
    if (this.val >= this.stopVal) {
     clearInterval(timer)
     return
    }
   }, 10)
  },
  watch: {
   /**
    * 監(jiān)聽組件props變化決定是否繼續(xù)加載,一般在父組件數(shù)據(jù)加載完后改變此標志位
    */
   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)閉進度條
      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頁面加載閃爍問題的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue?electron零基礎(chǔ)使用教程

    Vue?electron零基礎(chǔ)使用教程

    Electron也可以快速地將你的網(wǎng)站打包成一個原生應(yīng)用發(fā)布,下面這篇文章主要給大家介紹了關(guān)于Vue和React中快速使用Electron的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • Vue3 SFC 和 TSX 方式自定義組件實現(xiàn) v-model的詳細過程

    Vue3 SFC 和 TSX 方式自定義組件實現(xiàn) v-model的詳細

    v-model 是 vue3 中的一個內(nèi)置指令,很多表單元素都可以使用這個屬性,如 input、checkbox 等,咱可以在自定義組件中實現(xiàn) v-model,這篇文章主要介紹了Vue3 SFC 和 TSX 方式自定義組件實現(xiàn) v-model,需要的朋友可以參考下
    2022-10-10
  • 詳解vuex持久化插件解決瀏覽器刷新數(shù)據(jù)消失問題

    詳解vuex持久化插件解決瀏覽器刷新數(shù)據(jù)消失問題

    這篇文章主要介紹了詳解vuex持久化插件解決瀏覽器刷新數(shù)據(jù)消失問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • Vue中如何動態(tài)顯示表格內(nèi)容

    Vue中如何動態(tài)顯示表格內(nèi)容

    這篇文章主要介紹了Vue中如何動態(tài)顯示表格內(nèi)容問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue3中?provide?和?inject?用法及原理

    vue3中?provide?和?inject?用法及原理

    這篇文章主要介紹vue3中?provide?和?inject?用法及原理,provide?和?inject可以?解決多次組件傳遞數(shù)據(jù)的問題,下面文章是具體的用法和實現(xiàn)原理,具有一定的參考價值,需要的朋友可以參考一下,希望對大家有所幫助
    2021-11-11
  • vue項目Luckysheet的使用

    vue項目Luckysheet的使用

    這篇文章主要介紹了vue項目Luckysheet的使用,目前Luckysheet不支持使用npm安裝包,所以只能使用CDN引入依賴,在vue項目的public/index.html文件里引入即可,本文通過示例代碼給大家詳細介紹,需要的朋友可以參考下
    2022-08-08
  • Vue.js實現(xiàn)移動端短信驗證碼功能

    Vue.js實現(xiàn)移動端短信驗證碼功能

    現(xiàn)在的短信驗證碼一般為4位或6位,則頁面中會相應(yīng)的顯示4個或6個文本框.好多網(wǎng)站需求都有此功能,今天小編給大家分享基于vue.js實現(xiàn)移動端短信驗證碼功能,需要的朋友參考下吧
    2017-03-03
  • rollup打包vue組件并發(fā)布到npm的方法

    rollup打包vue組件并發(fā)布到npm的方法

    這篇文章主要介紹了rollup打包vue組件并發(fā)布到npm,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • 一篇文章教你實現(xiàn)VUE多個DIV,button綁定回車事件

    一篇文章教你實現(xiàn)VUE多個DIV,button綁定回車事件

    這篇文章主要介紹了VUE多個DIV綁定回車事件,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-10-10
  • vue鼠標移入添加class樣式,鼠標移出去除樣式(active)實現(xiàn)方法

    vue鼠標移入添加class樣式,鼠標移出去除樣式(active)實現(xiàn)方法

    今天小編就為大家分享一篇vue鼠標移入添加class樣式,鼠標移出去除樣式(active)實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08

最新評論

海淀区| 东明县| 随州市| 蒲江县| 来凤县| 蓝山县| 大渡口区| 信宜市| 仁寿县| 保定市| 罗山县| 新竹县| 嫩江县| 自贡市| 鄱阳县| 鄂州市| 和林格尔县| 廊坊市| 富裕县| 彭水| 来安县| 潞西市| 通渭县| 四子王旗| 子洲县| 曲阜市| 兰西县| 高邮市| 九龙城区| 湘阴县| 大渡口区| 玉林市| 东明县| 广东省| 望谟县| 高邮市| 姚安县| 永昌县| 襄樊市| 六枝特区| 海淀区|