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

vue2首次加載屏幕閃爍問題

 更新時間:2025年01月16日 08:54:56   作者:程琬清君  
這篇文章詳細介紹了Vue.js項目的基本結構和執(zhí)行流程,包括index.html、main.js、App.vue和路由配置的關系,特別強調了在index.html中設置BASE_URL和cdn的使用,以及在main.js中使用render函數(shù)來減少打包體積

vue2首次加載屏幕閃爍

先看我的bug動圖:

我想要的動圖:

可能圖片不明顯 反正就是只要這個正在加載資源這個頁面

1.了解vue項目執(zhí)行流程

vue項目中影響組件渲染和掛載有這幾個文件:index.html、main.js、App.vue、路由配置,那么它們之間的關系是如何呢?

答:

  • 1.index.html是項目入口
  • 2.main.js是入口文件(值得關注的是main.js的render函數(shù),下面會詳細的講)
  • 3.App.vue根組件
  • 4.路由配置(作用是:將路由名字和組件映射并渲染到App.vue)

執(zhí)行順序:index.html、main.js、App.vue、路由配置index.js、具體vue組件

index.html

①想要項目打包體積小,我們經常將第三方庫的cdn寫在index.html,比如(需要先將cdn下載到項目里):

<head> 
<link rel="stylesheet" href="<%= BASE_URL %>cdn/element-ui/2.15.12/theme-chalk/index.css" rel="external nofollow" >
</head>

有人可能會問BASE_URL是什么?答:這個BASE_URL是根據(jù)vue.config.js的publicPath去設置的路徑,這個路徑決定了我們的前端項目打包后獲取靜態(tài)資源的默認的根路徑。

  • ②body標簽里的<noscript></noscript>里寫如果沒有js支持時,將寫的的代碼。
  • ③重點??!body標簽里的<div id="app"></div>里面寫的是:當vue實例還沒有完成掛載時,vue項目將顯示什么內容。

列取一段代碼:

<body>
  <div id="app">
     <div class="avue-home">
    <div class="avue-home__main">
      <img class="avue-home__loading" src="<%= BASE_URL %>svg/loading-spin.svg" alt="loading">
      <div class="avue-home__title">
        正在加載資源
      </div>
      <div class="avue-home__sub-title d">
        初次加載資源可能需要較多時間 請耐心等待
      </div>
    </div>
  </div>
  </div>
 
</body>
  • ④那跟<div id="app"><div>同級的標簽還會顯示嗎?答:會!因為在vue實例還沒有掛載時,會運行index.html整個文件。
  • ⑤js也就是<script>標簽最好寫在</body>之上,比如:

簡寫代碼:

<body>
  <div id="app">
  </div>
<script src="<%= BASE_URL %>cdn/xlsx/xlsx.full.min.js"></script>
</body>

main.js

  • ①我們最應該也重點注意到這段代碼:
var vue = new Vue({
  router,
  render: h => h(App),
  beforeCreate() { } // 一般不寫生命周期,這里我只是列出來告訴你們--->這里是vue實例,所以什么生命周期,data統(tǒng)統(tǒng)可以寫

}).$mount('#app')

1.render是重點:請務必注意它必須要有返回值。為什么是render?

答:請看這2句代碼

import Vue from 'vue';
import App from './App';

(1)vue.js才是完整版的vue,包含了:核心功能 + 模板解析器,它在

(2)vue.runtime.xxx.js是運行版的vue,只包含了:核心功能,沒有模板解析器。

完整的vue你可以看node_modules下的vue文件,如下圖

因為我們項目里用的是殘缺的vue.js,是一個不會解析template標簽的vue.js,引用render是為了減少打包的文件大小、使打包文件不會出現(xiàn)沒有用處的模板解析器。

2.項目中出現(xiàn)白屏閃爍的原因以及解決方式

原因:可以根據(jù)上面的vue項目執(zhí)行的流程可得,vue實例中的組件的模板內容(即app.vue)取代了index.html的<div id="app"></div>里的內容,在這個瞬間出現(xiàn)的白屏閃爍。

我看了網上很多人說v-cloak但我試了沒用,以下是我的處理方式,效果是達到了,可能還不夠很好,如果有大佬有更好的辦法請在此條文章下評論大家一起探討。

1.我原本的代碼:

index.html 
<div id="app">
 <div class="avue-home">
    <div class="avue-home__main">
      <img class="avue-home__loading" src="<%= BASE_URL %>svg/loading-spin.svg" alt="loading">
      <div class="avue-home__title">
        正在加載資源
      </div>
      <div class="avue-home__sub-title d">
        初次加載資源可能需要較多時間 請耐心等待
      </div>
    </div>
  </div>
  </div>
 

2.我修改后的代碼

index.html文件里(你沒看錯,我將我要展示的內容寫到了<div id="app">同級的地方):

 <div id="app">
  </div>
  <div class="avue-home">
    <div class="avue-home__main">
      <img class="avue-home__loading" src="<%= BASE_URL %>svg/loading-spin.svg" alt="loading">
      <div class="avue-home__title">
        正在加載資源
      </div>
      <div class="avue-home__sub-title d">
        初次加載資源可能需要較多時間 請耐心等待
      </div>
    </div>
  </div>

并在index.html文件里寫上avue-home的樣式,我的樣式是(供參考):

.avue-home {
      background-color: #303133;
      height: 100vh;
      width: 100%;
      display: flex;
      flex-direction: column;
      position: fixed;
      top: 0;
      left: 0;
      z-index: 999;
    }

接下來是重點了:

我們都知道最后是app.vue的代碼替換了<div id='app'>,所以在app.vue文件里寫:

  • app.vue
mounted () {
// 當app.vue掛載完畢時,讓瀏覽器延遲1s自動刪除class為.avue-home的這個節(jié)點(有點繞,但可以好好想想)
    const avueHome = document.querySelector('.avue-home') // 獲取到這個class的節(jié)點
    setTimeout(() => {
      avueHome.parentNode.removeChild(avueHome) // 該節(jié)點的父級去刪除這個class
    }, 1000)

  },

希望大家細品這兩句代碼。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue中循環(huán)請求接口參數(shù)問題及解決

    vue中循環(huán)請求接口參數(shù)問題及解決

    這篇文章主要介紹了vue中循環(huán)請求接口參數(shù)問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • el-table嵌套el-popover處理卡頓的解決

    el-table嵌套el-popover處理卡頓的解決

    本文主要介紹了el-table嵌套el-popover處理卡頓的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • vue2封裝input組件方式(輸入的雙向綁定)

    vue2封裝input組件方式(輸入的雙向綁定)

    這篇文章主要介紹了vue2封裝input組件方式(輸入的雙向綁定),具有很好的參考價值,希望對大家有所幫助。
    2023-04-04
  • 詳解vue表單——小白速看

    詳解vue表單——小白速看

    大家可以用 v-model 指令在表單控件元素上創(chuàng)建雙向數(shù)據(jù)綁定。這篇文章主要介紹了vue表單詳解,需要的朋友可以參考下
    2018-04-04
  • Vue.js獲取被選擇的option的value和text值方法

    Vue.js獲取被選擇的option的value和text值方法

    今天小編就為大家分享一篇Vue.js獲取被選擇的option的value和text值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue中 this.$set的用法詳解

    vue中 this.$set的用法詳解

    這篇文章主要介紹了vue中 this.$set的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 詳細解釋Vue3中的getCurrentInstance是什么

    詳細解釋Vue3中的getCurrentInstance是什么

    這篇文章主要介紹了Vue3中getCurrentInstance是什么的相關資料,getCurrentInstance是Vue3提供的一個API,用于在組合式API中獲取當前組件實例,從而訪問組件的屬性、方法、插槽等信息,文中將用法介紹的非常詳細,需要的朋友可以參考下
    2025-05-05
  • Vue 如何追蹤數(shù)據(jù)變化

    Vue 如何追蹤數(shù)據(jù)變化

    這篇文章主要介紹了Vue 如何追蹤數(shù)據(jù)變化,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下
    2021-04-04
  • Vue大屏數(shù)據(jù)展示示例

    Vue大屏數(shù)據(jù)展示示例

    公司的大數(shù)據(jù)工作組就需要通過數(shù)據(jù)大屏展示一些處理過后有價值的信息,本文主要介紹了Vue大屏數(shù)據(jù)展示示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • vue配置nprogress實現(xiàn)頁面頂部進度條

    vue配置nprogress實現(xiàn)頁面頂部進度條

    這篇文章主要為大家詳細介紹了vue配置nprogress實現(xiàn)頁面頂部進度條,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評論

重庆市| 靖远县| 平塘县| 登封市| 成安县| 南皮县| 库车县| 乃东县| 富顺县| 南昌市| 阜宁县| 玉龙| 荥经县| 宁津县| 莱芜市| 罗平县| 漳州市| 乌拉特中旗| 家居| 祁连县| 梧州市| 桦南县| 武宣县| 安化县| 定西市| 西峡县| 水富县| 莫力| 磐安县| 万盛区| 宁南县| 昔阳县| 上犹县| 晴隆县| 子洲县| 白沙| 垣曲县| 准格尔旗| 龙陵县| 蒲江县| 马山县|