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

Vue首頁加載白屏原因以及10種解決方法匯總

 更新時(shí)間:2023年03月02日 15:13:33   作者:進(jìn)階的巨人001  
這篇文章主要介紹了Vue首頁加載白屏原因以及10種解決方法匯總,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

首先說一下首頁加載為什么會(huì)白屏?

先說下Spa單頁面的加載過程

首先就是html,也就是FP階段

<div id="app"></div>?

頁面在導(dǎo)航后首次呈現(xiàn)出不同于導(dǎo)航前內(nèi)容的時(shí)間點(diǎn),有一個(gè)東西回來渲染在頁面上了

然后是靜態(tài)資源css,js,之后解析js,生成HTML,也就是FCP階段,css,js資源加載下來了,首次的內(nèi)容繪制,有一個(gè)大結(jié)構(gòu)了

<div id="app">
? <div class="header"></div>
</div>

比如app根目錄里面有一個(gè)header,div

到最后,就是FMP,ajax請求數(shù)據(jù)之后,首次有效繪制,就是頁面加載差不多了,但是可能圖片還沒加載出來

總結(jié):

從FP到FMP這個(gè)過程全是白屏,可能你的header如果有啥大背景色啊,這個(gè)背景色或許會(huì)出來,ajax之后,才會(huì)真正去解析我們的數(shù)據(jù),把數(shù)據(jù)放入我們的html標(biāo)簽中。

如下圖所示:

得說解決首屏加載慢的辦法了,我總結(jié)了10種!

1.預(yù)渲染

預(yù)渲染就是webpack打包時(shí)候渲染,通過無頭瀏覽器

無頭瀏覽器,打包的時(shí)候,可以把你index.html的內(nèi)容放入你這個(gè)瀏覽器,但是你這個(gè)瀏覽器是空白的,然后當(dāng)你進(jìn)入頁面時(shí)候直接加載這個(gè)index.html,但是沒ajax請求

獲取到預(yù)渲染的頁面html內(nèi)容,然后再放入index.html,再到CDN,直接請求html(相當(dāng)于FMP提前到了FP),其實(shí)更像另外一種骨架屏,少了ajax請求

但是由于這樣做我們只能添加死數(shù)據(jù),而不能把a(bǔ)jax請求的數(shù)據(jù)渲染到首頁上,怎么解決呢?

我們可以在app.vue中

<div id="header"></div>

比如要在這個(gè)header標(biāo)簽里面加ajax請求

直接在script中請求給它添加數(shù)據(jù)即可

document.querySelector('#header').html('...')

2.同構(gòu)

何為同構(gòu)渲染,就是一套代碼多端使用

現(xiàn)在有一些框架,Next,Nuxt,類似于渲染就是vue ->json ->vue-server-renderer ->html

3.SSR

服務(wù)端渲染也可以解決首屏加載慢這個(gè)問題,因?yàn)榉?wù)端會(huì)把所有數(shù)據(jù)全部渲染完成再返回給客戶端

ssr =>請求->node->解析 ->吐回給客戶端(帶請求數(shù)據(jù))

但是有一個(gè)大問題,重要的是node層,高并發(fā)的解決

4.路由懶加載

可以通過plugin-syntax-dynamic-import 這個(gè)插件

Vue.component('async-component',(resolve)=>{
  import('./AsyncComponent.js')
  .then((AsyncComponent)=>{
    resolve(AsyncComponent.default)
  })
})

但是現(xiàn)在好像直接可以通過箭頭函數(shù)實(shí)現(xiàn)路由懶加載

const app = () =>import('')

5.quicklink

quicklink就是在瀏覽器空閑的時(shí)候去指定需要加載的數(shù)據(jù),這個(gè)是谷歌開源的,可以去看看

6.使用Gzip壓縮

減少文件體積,加快首屏頁面打開速度

前提是服務(wù)器那邊得開啟gzip

前端需要做的事

npm i compression-webpack-plugin -D

vue.config.js

const CompressionPlugin = require("compression-webpack-plugin")

module.exports = {
  configureWebpack: () => {
    if (process.env.NODE_ENV === 'production') {
      return {
        plugins: [
          new CompressionPlugin({
            test: /\.js$|\.html$|\.css$|\.jpg$|\.jpeg$|\.png/, // 需要壓縮的文件類型
            threshold: 10240, // 歸檔需要進(jìn)行壓縮的文件大小最小值,我這個(gè)是10K以上的進(jìn)行壓縮
            deleteOriginalAssets: false, // 是否刪除原文件
            minRatio: 0.8
          })
        ]
      }
    }
  }
}

7.外鏈CSS,JS文件

很多時(shí)候我們在main.js中直接import一些ui庫或者css文件啥的,以后可以在index.html,通過script外鏈引入,這樣就不會(huì)通過我們的webpack打包

8.webpack entry

這個(gè)就是將單頁改成多頁應(yīng)用,比如一些組件中,vue.js vue-router等插件已經(jīng)在某個(gè)頁面使用了,然后給它緩存起來,下次就無需加載

9.骨架屏

骨架屏就是在進(jìn)入項(xiàng)目的FP階段,給它來一個(gè)類似輪廓的東西,當(dāng)我們的頁面加載完成之后就消失,這個(gè)也很好做的,很多ui庫都有這個(gè)東西,可以參考一下

10.loading

首頁加一個(gè)loading或許是最原始的方法了,在index.html里加一個(gè)loadingcss效果,當(dāng)頁面加載完成消失

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue3+ts深入組件Props實(shí)例詳解

    vue3+ts深入組件Props實(shí)例詳解

    Props是組件之間進(jìn)行數(shù)據(jù)傳遞的一種方式,可以將數(shù)據(jù)從父組件傳遞給子組件,這篇文章主要介紹了vue3+ts深入組件Props的實(shí)例詳解,需要的朋友可以參考下
    2023-09-09
  • 解決vue項(xiàng)目中頁面調(diào)用數(shù)據(jù) 在數(shù)據(jù)加載完畢之前出現(xiàn)undefined問題

    解決vue項(xiàng)目中頁面調(diào)用數(shù)據(jù) 在數(shù)據(jù)加載完畢之前出現(xiàn)undefined問題

    今天小編就為大家分享一篇解決vue項(xiàng)目中頁面調(diào)用數(shù)據(jù) 在數(shù)據(jù)加載完畢之前出現(xiàn)undefined問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue?路由切換過渡動(dòng)效滑入滑出效果的實(shí)例代碼

    vue?路由切換過渡動(dòng)效滑入滑出效果的實(shí)例代碼

    在支付寶賬單頁面有這樣一個(gè)特效切換過渡動(dòng)效滑入滑出效果,非常方便實(shí)用,那么這個(gè)功能如何實(shí)現(xiàn)的呢?下面小編通過vue實(shí)現(xiàn)路由切換過渡動(dòng)效滑入滑出效果,感興趣的朋友一起看看吧
    2022-03-03
  • 關(guān)于vue路由監(jiān)聽事件跳轉(zhuǎn)的問題

    關(guān)于vue路由監(jiān)聽事件跳轉(zhuǎn)的問題

    這篇文章主要介紹了關(guān)于vue路由監(jiān)聽事件跳轉(zhuǎn)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue實(shí)現(xiàn)列表滾動(dòng)的過渡動(dòng)畫

    vue實(shí)現(xiàn)列表滾動(dòng)的過渡動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)列表滾動(dòng)的過渡動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Vue extend使用示例深入分析

    Vue extend使用示例深入分析

    這篇文章主要介紹了Vue.extend使用示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Vue自定義指令詳細(xì)

    Vue自定義指令詳細(xì)

    這篇文章主要介紹了Vue自定義指令,文章從背景開始詳細(xì)介紹Vue自定義指令的詳細(xì)內(nèi)容,隨著Vue自定義指令的相關(guān)資料展開具體內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Vue按需加載的具體實(shí)現(xiàn)

    Vue按需加載的具體實(shí)現(xiàn)

    本篇文章主要介紹了Vue按需加載的具體實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Vue3兄弟組件傳值之mitt的超詳細(xì)講解

    Vue3兄弟組件傳值之mitt的超詳細(xì)講解

    之前只是淺顯的使用插件進(jìn)行vue開發(fā)展示,最近深入的研究了下,下面這篇文章主要給大家介紹了關(guān)于Vue3兄弟組件傳值之mitt的超詳細(xì)講解,需要的朋友可以參考下
    2022-06-06
  • vue3中element-plus?Upload上傳文件代碼示例

    vue3中element-plus?Upload上傳文件代碼示例

    這篇文章主要介紹了vue3中element-plus?Upload上傳文件的相關(guān)資料,在時(shí)間開發(fā)中上傳文件是經(jīng)常遇到的一個(gè)需求,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08

最新評論

大余县| 仙桃市| 炎陵县| 马关县| 肥城市| 松滋市| 桃园县| 宜兰市| 洛隆县| 武汉市| 西充县| 渝北区| 泾阳县| 普安县| 娱乐| 花垣县| 高青县| 民丰县| 自治县| 岱山县| 迁西县| 江门市| 新闻| 云林县| 郧西县| 凤冈县| 大足县| 福州市| 阳江市| 古交市| 嘉义市| 明光市| 阳春市| 三原县| 洛南县| 上思县| 宜良县| 禹城市| 永城市| 民县| 济南市|