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

JS利用?React.lazy?優(yōu)化頁面初次渲染

 更新時間:2022年07月26日 09:13:04   作者:??Cyber_Bear?  
這篇文章主要介紹了JS利用?React.lazy?優(yōu)化頁面初次渲染,React.lazy?接受一個函數(shù),這個函數(shù)需要動態(tài)調(diào)用import(),它必須返回一個Promise,該Promise需要resolve一個default?export的React組件

一、需求背景

主站采用qiankun微前端方式嵌入新項目,qiankun會阻塞子應用資源加載,這導致應用白屏時間增加,希望在子應用端進行優(yōu)化以減少白屏時間。

二、代碼分析

利用 webpack-bundle-analyzer 檢查當前 bundle

// 安裝
npm install -D webpack-bundle-analyzer

// 配置
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

module.exports = {
  plugins: [
    new BundleAnalyzerPlugin()
  ]
}

// 使用 構(gòu)建時自動彈出
npm run build

第三方庫如echarts已經(jīng)使用按需引入方案,從代碼體積層面已無優(yōu)化空間

由圖可知,當前 bundle 體積集中在2.6cb4c9dd.chunk.js中,有必要進行代碼分割

優(yōu)化方向:

  • 使用路由懶加載,延遲加載在初次渲染時未用到的組件。
  • 使用 prefetch 功能,在首頁必須資源加載完后自動加載其他路由頁面資源,防止路由跳轉(zhuǎn)白屏

三、技術(shù)實現(xiàn)

1. 路由懶加載

使用 React.lazy

const Market = React.lazy(() => import(/* webpackChunkName: "Market" */ './pages/market'))
const Record = React.lazy(() => import(/* webpackChunkName: "Record" */ './pages/Myrecord'))
const Detail = React.lazy(() => import(/* webpackChunkName: "Detail" */ './pages/detail'))

打包分析圖:

由圖可以看到,webpack 不僅將路由分離成了單獨的bundle,并且對依賴進行了拆解,將首屏未用到的第三方依賴,如echarts、zrender拆分到單獨的 bundle 中,只在需要的路由頁進行加載,這大大減少了首屏資源加載體積(37%),將明顯提前進入首屏渲染邏輯。

2. Prefetch 預獲取

由于路由懶加載功能將非首屏依賴抽離出來,默認只在進入對應路由頁面時刻進行加載,這會導致路由跳轉(zhuǎn)時出現(xiàn)白屏或者loading,影響用戶體驗。所以我們使用 Prefetch預獲取功能來幫助解決這個問題。

使用 webpackPrefetch:告訴瀏覽器將來可能需要該資源來進行某些導航跳轉(zhuǎn)

const Market = lazy(() => import(/* webpackPrefetch: true, webpackChunkName: "Market" */ './pages/market'))
const MyRecord = lazy(() => import(/* webpackPrefetch: true, webpackChunkName: "MyRecord" */ './pages/record'))
const Detail = lazy(() => import(/* webpackPrefetch: true, webpackChunkName: "Detail" */ './pages/detail'))

在首頁資源加載完成后,其他路由頁資源會以低優(yōu)先級的順序在后臺下載。在跳轉(zhuǎn)其他頁面時,可以快速從命中緩存,從而提前進入渲染邏輯。提升用戶體驗。

到此這篇關(guān)于JS利用 React.lazy 優(yōu)化頁面初次渲染的文章就介紹到這了,更多相關(guān)JS React.lazy 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在layui tab控件中載入外部html頁面的方法

    在layui tab控件中載入外部html頁面的方法

    今天小編就為大家分享一篇在layui tab控件中載入外部html頁面的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript表單焦點自動切換代碼

    JavaScript表單焦點自動切換代碼

    這篇文章主要介紹了JavaScript表單焦點自動切換代碼的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • JavaScript直接調(diào)用函數(shù)與call調(diào)用的區(qū)別實例分析

    JavaScript直接調(diào)用函數(shù)與call調(diào)用的區(qū)別實例分析

    這篇文章主要介紹了JavaScript直接調(diào)用函數(shù)與call調(diào)用的區(qū)別,結(jié)合額實例形式分析了JavaScript直接調(diào)用函數(shù)與call調(diào)用的基本用法、區(qū)別及相關(guān)注意事項,需要的朋友可以參考下
    2020-05-05
  • JavaScript 封裝一個tab效果源碼分享

    JavaScript 封裝一個tab效果源碼分享

    本文給大家分享javascript封裝一個tab效果源碼分享,感興趣的朋友一起來看看吧
    2015-09-09
  • 理解 JavaScript EventEmitter

    理解 JavaScript EventEmitter

    本文是筆者看了eventemitter3 和 Node.js 事件模塊源碼后實現(xiàn)的 EventEmitter 。JavaScript 事件很重要,希望看了這篇文章的你們能有所收獲
    2018-03-03
  • Javascript 判斷是否存在函數(shù)的方法

    Javascript 判斷是否存在函數(shù)的方法

    Javascript 判斷是否存在函數(shù),此功能如何實現(xiàn),接下來為您介紹解決方法,需要了解的朋友可以參考下
    2013-01-01
  • 9個JavaScript評級/投票插件

    9個JavaScript評級/投票插件

    在訪問某個網(wǎng)站或者博客時,如果該站點為用戶提供內(nèi)容的評級或投票功能的話,可以增強用戶參與的交互性之外,更可以給用戶一種“主人”的親切感,使得用戶可以切實地參與到網(wǎng)站內(nèi)容的評價體系中來。
    2010-01-01
  • JavaScript正則表達式和級聯(lián)效果

    JavaScript正則表達式和級聯(lián)效果

    正則表達式(regular expression)是一種字符串匹配的模式,用來檢查一個字符串中是否包含指定模式的字符串。下面通過本文給大家分享JavaScript_正則表達式和級聯(lián)效果,感興趣的朋友一起看看吧
    2017-09-09
  • 最簡單的JavaScript圖片輪播代碼(兩種方法)

    最簡單的JavaScript圖片輪播代碼(兩種方法)

    基于javascript代碼實現(xiàn)最簡單的圖片輪播效果,非常簡單,本文通過兩種方式給大家介紹最簡單的圖片輪播,感興趣的朋友一起學習吧
    2015-12-12
  • JS實現(xiàn)二叉查找樹的建立以及一些遍歷方法實現(xiàn)

    JS實現(xiàn)二叉查找樹的建立以及一些遍歷方法實現(xiàn)

    本篇文章主要介紹了JS實現(xiàn)二叉查找樹的建立以及一些遍歷方法實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04

最新評論

肇州县| 开封市| 永平县| 天气| 乌拉特后旗| 滦南县| 萝北县| 五原县| 体育| 苍溪县| 安仁县| 扎兰屯市| 新闻| 博白县| 孙吴县| 岐山县| 吉首市| 勃利县| 麻栗坡县| 上饶县| 乌鲁木齐市| 新巴尔虎右旗| 蛟河市| 凤山县| 和林格尔县| 延川县| 武夷山市| 托克逊县| 喜德县| 丹东市| 钟祥市| 吉林市| 松溪县| 巴南区| 托克逊县| 卢湾区| 巩留县| 遂宁市| 金沙县| 藁城市| 运城市|