快速優化您的 ReactJS 應用程式的效能和大小
React 被大量用於前端密集型應用程序,具有其獨特的性能和尺寸優化方式。改進兩者將對 React 套件大小產生相當大的可衡量的影響。考慮到我們專注於客戶端渲染的應用程序,套件大小越小,載入時間越快。
伺服器端渲染將進一步縮短載入時間。在伺服器端渲染中,當使用者要求網頁時,React 元件會在伺服器本身中渲染為 HTML 程式碼。然後這個預先渲染的頁面被送到瀏覽器,讓使用者立即看到頁面,而無需 JS 載入時間的開銷。
但這完全是一個不同的故事。讓我們主要專注於透過在程式碼中進行調整來改善包包大小來嘗試改進客戶端呈現的網站。讓我們深入探討一下。
1. 程式碼分割和動態導入
React 程式碼的「捆綁」是追蹤所有匯入和程式碼並將其組合成一個名為「Bundle」的單一檔案的過程。 Webpack、Browserify 等已經為我們做到了這一點。
Webpack 有一個名為「程式碼分割」的功能,負責將單一套件分割成更小的區塊,對區塊進行重複資料刪除,並「按需」導入它們。這會顯著影響應用程式的載入時間。
使用 React Suspense 延遲載入元件 (React 18):與動態導入結合將顯示元件載入時間的明顯改善。
通常,當我們在父元件中導入子元件時,我們是靜態導入的。為了防止在我們實際必須渲染它之前導入該元件,我們可以將動態導入與 React Suspense 結合使用。 React Suspense 可以按需載入元件。它顯示了 Fallback UI,同時動態導入然後渲染相應的元件。
2. 搖樹
這是 JavaScript 捆綁程式使用的技術,用於在建立捆綁包之前刪除所有未使用的程式碼。 ES6程式碼可以進行tree-shaking;但是,基於 CommonJS 的程式碼(即使用「require」)不能進行 tree-shaken。
Webpack Bundle Analyzer 是一個插件,可幫助您透過互動式地圖視覺化 Webpack 的大小。
然後設定您的 webpack 以將上述內容新增為外掛程式:
確保您的腳本配置為執行 Webpack:
運行yarn build來產生report.html,它將幫助您有效地視覺化您的套件大小。
它看起來像這樣:
3. 並發渲染
讓我們先了解什麼是阻塞渲染。阻塞渲染是指主執行緒(UX 更新)被阻塞,因為 React 在背景執行一些不太重要的任務。 React 16 之前都是這種情況。
React 18 引入了並發功能,這意味著它將:
- 讓您更能控制後台更新的排程方式,並透過不阻塞主執行緒來創建流暢的最終使用者體驗。
- 啟動狀態更新的自動批次:批次是指將因多次狀態更新而導致的多次重新渲染進行分組,使得狀態只更新一次。
使用 startTransition() 鉤子將 React 更新視為非緊急更新,幫助 React 優先考慮緊急更新,例如使用者輸入和使用者與元件的互動。
在這個例子中,當輸入值改變時,handleChange函數被呼叫。 startTransition 函數用於將對清單狀態的更新標記為非緊急。這允許 React 優先更新值狀態,確保即使在清單很大時輸入也能保持回應。
使用 useDeferredValue 鉤子延遲一個值(通常是昂貴的計算),直到 UI 不那麼繁忙。
在此範例中,useDeferredValue 掛鉤用於延遲值狀態,直到 UI 不那麼繁忙。這有助於透過將大列表的渲染推遲到處理輸入更新之後來保持輸入回應。
並發渲染的主要優點:
- 改進的回應能力:透過允許 React 中斷渲染工作,UI 仍然可以回應使用者互動。
- 優先權:React 可以優先考慮緊急更新而不是非緊急更新,確保更流暢的使用者體驗。
- 更好的效能:可以推遲昂貴的更新,減少對主執行緒的影響並提高應用程式的整體效能。
4.支援資源預載(React 19)
如果您知道應用程式在載入過程中會取得任何大量資源,那麼預先載入資源是一個好主意。這些資源可以是字體、圖像、樣式表等
預先載入有益的場景:
- 子元件將使用資源。在這種情況下,您可以在父元件的渲染階段預先載入它。
- 在事件處理程序中預先載入它,該事件處理程序會重定向到將使用此資源的頁面/元件。事實上,這是比在渲染期間預先載入更好的選擇。
有趣的事實:實施預先載入後,包括Shopify、Financial Times 和Treebo 在內的許多網站都發現以用戶為中心的指標(例如互動時間和用戶感知延遲)提高了1秒。
請留下回饋
我希望您覺得這個部落格有幫助!您的回饋對我來說非常寶貴 ,所以請在下面的評論中留下您的想法和建議。
請隨時在 LinkedIn 上與我聯繫以獲取更多見解和更新。讓我們保持聯繫,繼續共同學習和成長!
以上是快速優化您的 ReactJS 應用程式的效能和大小的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。
