React構建的JS優化思路

背景

之前個人博客搭建時,發現頁面加載要5s才能完成并顯示

問題

React生成的JS有1.4M,對于個人博客服務器的帶寬來說,壓力較大,因此耗費了5S的時間

優化思路

解決React生成的JS大小,因為我用的是react-router-dom路由模塊,查閱資料發現可以利用懶加載的機制,實現JS分割成不同的JS文件

利用React.lazy進行懶加載,在頁面尚未加載完畢的時候,需要配置Suspense

Suspense的作用是當React.lazy懶加載完成時,就回調真正的頁面實現展示

實現代碼

import React, {Suspense } from 'react'
import { BrowserRouter, Route } from 'react-router-dom'
import { Loading } from '../components/common'import Home from '../components'
import Download from '../components/download/'
import Login from '../components/login'
import Prize from '../components/prize'
import News from '../components/news'
import NewsDetail from '../components/news/detail'
import Support from '../components/support'
import Me from '../components/me'
import Pay from '../components/pay'const App = () => (// 使用 BrowserRouter 的 basename 確保在服務器上也可以運行 basename 為服務器上面文件的路徑<BrowserRouter basename='/'><Route path='/' exact component={Home} /><Route path='/download' exact component={Download} /><Route path='/prize' exact component={Prize} /><Route path='/news' exact component={News} /><Route path='/news/detail' exact component={NewsDetail} /><Route path='/support' exact component={Support} /><Route path='/me' component={Me} /><Route path='/pay' component={Pay} /><Login /></BrowserRouter>
)// 因為使用了多語言配置,react-i18next 邀請需要返回一個函數
export default function Main() {return (<Suspense fallback={<Loading />}><App /></Suspense>);
}

優化后效果

image-20230806022628839

參考文章

  • 博客原文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35704.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35704.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35704.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ORA-01034: ORACLE not available、ORA-27101: shared memory realm does not exist

發生緣由 學習 Oracle 的使用&#xff0c;結果關機之后重新使用 SQLPlus 發現無法登錄 -- windows server 2003 使用 sqlplus連接oracle報錯 C:\Documents and Settings\Adminstrator> sqlplus system/linxuan ORA-01034:ORACLE not available ORA-27101:shared memory r…

SAP FIORI Launchpad 403 forbidden error

問題&#xff1a; 在前臺輸入/N/UI2/FLP 瀏覽器顯示 403 forbidden 查閱資料得知 相關sicf 的服務未激活 note:3011106 檢查以下所有服務是否已在事務代碼 SICF 中激活&#xff1a; /default_host/sap/bc/ui2/nwbc/ /default_host/sap/bc/ui2/start_up /default_host/sap…

prometheus告警發送組件部署

一、前言 要實現Prometheus的告警發送需要通過alertmanager組件&#xff0c;當prometheus觸發告警策略時&#xff0c;會將告警信息發送給alertmanager&#xff0c;然后alertmanager根據配置的策略發送到郵件或者釘釘中&#xff0c;發送到釘釘需要安裝額外的prometheus-webhook…

模擬實現消息隊列(以 RabbitMQ 為藍本)

目錄 1. 需求分析1.1 介紹一些核心概念核心概念1核心概念2 1.2 消息隊列服務器&#xff08;Broker Server&#xff09;要提供的核心 API1.3 交換機類型1.3.1 類型介紹1.3.2 轉發規則&#xff1a; 1.4 持久化1.5 關于網絡通信1.5.1 客戶端與服務器提供的對應方法1.5.2 客戶端額外…

一站式FlinkSpark平臺解決方案——StreamX

隨著Flink&Spark生態的不斷完善&#xff0c;越來越多的企業選擇這兩款組件&#xff0c;或者其中之一作為離線&實時的大數據開發工具&#xff0c;但是在使用他們進行大數據的開發中我們會遇到一些問題&#xff0c;比如&#xff1a; 任務運行監控怎么處理&#xff1f;使…

【LangChain概念】了解語言鏈?:第2部分

一、說明 在LangChain的幫助下創建LLM應用程序可以幫助我們輕松地鏈接所有內容。LangChain 是一個創新的框架&#xff0c;它正在徹底改變我們開發由語言模型驅動的應用程序的方式。通過結合先進的原則&#xff0c;LangChain正在重新定義通過傳統API可以實現的極限。 在上一篇博…

一文讀懂!一年耗能堪比2個三峽電站的大數據中心,背后竟隱藏著這些秘密......

全國大數據中心1年的能耗規模相當于2個三峽電站一整年的發電量&#xff0c;這是為什么&#xff1f; 大數據中心每耗費1度電&#xff0c;只有一半用在了“計算”上面&#xff0c;其他的都應用在散熱、照明等方面到底是怎么回事&#xff1f; 為什么說在算力上每投入1元&#xff0…

【二】數據庫系統

數據庫系統的分層抽象DBMS 數據的三個層次從 數據 到 數據的結構----模式數據庫系統的三級模式&#xff08;三級視圖&#xff09;數據庫系統的兩層映像數據庫系統的兩個獨立性數據庫系統的標準結構 數據模型從 模式 到 模式的結構----數據模型三大經典數據模型 數據庫的演變與發…

【系統軟件03】centos7安裝和使用node-v18.16.0(centos7升級glibc 2.28)

【系統軟件03】centos7安裝和使用node-v18.16.0&#xff08;centos7升級glibc 2.28&#xff09; 前言&#xff1a;本文是解決node 18.16.0的依賴問題&#xff0c;具體的node安裝流程&#xff0c;可以參考我的另外一篇文章。一、下載node v18.16.0二、下載glibc2.28&#xff08;…

uniapp使用阿里矢量庫

然后解壓復制全部到你的項目文件 最后只要這幾個 然后引入 最后在你需要的頁面使用

LeetCode 2813. Maximum Elegance of a K-Length Subsequence【反悔貪心】2582

本文屬于「征服LeetCode」系列文章之一&#xff0c;這一系列正式開始于2021/08/12。由于LeetCode上部分題目有鎖&#xff0c;本系列將至少持續到刷完所有無鎖題之日為止&#xff1b;由于LeetCode還在不斷地創建新題&#xff0c;本系列的終止日期可能是永遠。在這一系列刷題文章…

JavaWeb中Json傳參的條件

JavaWeb中我們常用json進行參數傳遞 對應的注釋為RequestBody 但是json傳參是有條件的 最主要是你指定的實體類和對應的json參數能否匹配 1.屬性和對應的json參數名稱對應 2.對應實體類實現了Serializable接口&#xff0c;可以進行序列化和反序列化&#xff0c;這個才是實體類轉…

黑馬項目一階段面試58題 Web14題(二)

八、內連接和外連接查詢有什么區別 內連接 獲取兩表的交集部分 外連接 獲取某表的所有數據&#xff0c;以及兩表的交集數據 九、事務管理的作用&#xff0c;四大特性 作用 保證多個增刪改的操作&#xff0c;要么同時成功&#xff0c;要么同時失敗 四大特性 1.原子性 事…

Ajax同源策略及跨域問題

Ajax同源策略及跨域問題 同源策略ajax跨域問題什么是跨域&#xff1f;為什么不允許跨域&#xff1f;跨域解決方案1、CORS2、express自帶的中間件cors3、JSONP原生JSONPjQuery發送JSONP 4、使用vscode的Live Server插件 同源策略 同源策略&#xff08;Same-Origin Policy&#…

Kotlin入門:程序的邏輯控制——03

一、程序的邏輯控制 程序的執行語句主要分為3種&#xff1a;順序語句、條件語句和循環語句。 二、if條件語句 if表達式在Kotlin中用于根據條件執行不同的代碼塊。它有兩種形式&#xff1a;普通if和帶返回值的if。 普通if語句&#xff1a; 普通的if語句由關鍵字if、一個布爾表達…

電腦合上蓋子無線網絡不會斷開

控制面板\硬件和聲音\電源選項\系統設置 最終選擇不會采取任何操作 選擇不會采取任何操作

前端性能優化之性能優化的指標和工具(chrome devtools、lighthouse、webpagetest)

文章目錄 引言一、為什么要進行web性能優化二、RAIL測量模型1. 什么是RAIL2. 性能測量工具 三、性能測量工具的使用和性能指標以及優化目標1. Chrome DevTools1. 打開調試工具方式和配置2. network下的幾個性能指標1. requests 請求總數2. transferred實際從服務器下載的數據量…

【數據結構與算法】十大經典排序算法-希爾排序

&#x1f31f;個人博客&#xff1a;www.hellocode.top &#x1f3f0;Java知識導航&#xff1a;Java-Navigate &#x1f525;CSDN&#xff1a;HelloCode. &#x1f31e;知乎&#xff1a;HelloCode &#x1f334;掘金&#xff1a;HelloCode ?如有問題&#xff0c;歡迎指正&#…

手撕數據結構之棧+例題

目錄 一、棧的概念及結構 二、棧的頭文件及基本框架 三、接口實現 1、對棧的初始化 2、棧的銷毀 3、入棧操作 4、出棧操作 5、判斷棧是否為空 6、返回棧頂元素 7、遍歷棧 四、有效的括號 - 力扣&#xff08;LeetCode&#xff09; 題目描述&#xff1a; 思路&#xff…

靜態網頁和動態網頁區別

1&#xff0c;靜態網頁和動態網頁有何區別 1) 更新和維護 靜態網頁內容一經發布到網站服務器上&#xff0c;無論是否有用戶訪問&#xff0c;這些網頁內容都是保存在網站服務器上的。如果要修改網頁的內容&#xff0c;就必須修改其源文件&#xff0c;然后重新上傳到服務器上。…