React?代碼拆分的幾種方法示例詳解
前沿
當(dāng)我們項(xiàng)目越來(lái)越大的時(shí)候,代碼的體積會(huì)變得龐大,導(dǎo)致我們項(xiàng)目的加載速度變慢,特別是如果您包含大型第三方庫(kù)。您需要密切關(guān)注包含在bundle中的代碼,以免我們的項(xiàng)目體積太大,導(dǎo)致加載時(shí)間長(zhǎng),影響用戶體驗(yàn)。在React項(xiàng)目中,我們可以通過(guò)以下幾種方式對(duì)代碼進(jìn)行拆分,可以將代碼拆分成小的塊。讓我們的網(wǎng)站速度變快。
動(dòng)態(tài)加載(import)
es6提供import()函數(shù),它是運(yùn)行時(shí)執(zhí)行,也就是說(shuō),什么時(shí)候運(yùn)行到這一句,就會(huì)加載指定的模塊。
import()返回一個(gè) Promise 對(duì)象。在React中,我們可以這樣去做。通過(guò)打包工具,會(huì)在打包的過(guò)程中對(duì)PageModuels生成單獨(dú)的文件,在運(yùn)行的時(shí)候異步加載
import React, { useState, useEffect } from 'react';
const Index = () => {
const [Cmp, setCmp] = useState(null);
useEffect(() => {
import('./PageModules').then((mod) => setCmp(mod.default));
}, []);
return Cmp ? <Cmp /> : <div>Loading...</div>;
};
loadable component
Loadable Components是一個(gè)高階組件,允許您將代碼拆分為更小的塊并按需加載,支持服務(wù)端渲染,使用方式比較簡(jiǎn)單。
import loadable from '@loadable/component'
const OtherComponent = loadable(() => import('./OtherComponent'))
function MyComponent() {
return (
<div>
<OtherComponent />
</div>
)
}
它和我們接下來(lái)要介紹的React.lazy還有些區(qū)別,可參考 loadable-components.com/docs/loadab…
React Lazy 和 React Suspense
React Lazy是react官方提供的解決方案,非常推薦使用該方案去做代碼拆分.需要React.Suspense配合, 該組件可以指定加載指示器(loading indicator),以防其組件樹(shù)中的某些子組件尚未具備渲染條件。使用方式如下
// 該組件是動(dòng)態(tài)加載的
const OtherComponent = React.lazy(() => import('./OtherComponent'));
function MyComponent() {
return (
// 顯示 <Spinner> 組件直至 OtherComponent 加載完成
<React.Suspense fallback={<Spinner />}>
<div>
<OtherComponent />
</div>
</React.Suspense>
);
}
參考
結(jié)束語(yǔ)
如果是新的項(xiàng)目且不需要服務(wù)端渲染,推薦使用React.lazy。如果需要服務(wù)端渲染的話,推薦使用loadable component。小伙伴們可以分析下你們項(xiàng)目的依賴,把一些模塊拆成獨(dú)立的模塊,減少代碼體積。
以上就是React 代碼拆分的幾種方法示例詳解的詳細(xì)內(nèi)容,更多關(guān)于React 代碼拆分的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
簡(jiǎn)析React Native startReactApplication 方法
這篇文章主要介紹了React Native startReactApplication 方法簡(jiǎn)析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
淺談React的React.FC與React.Component的使用
本文主要介紹了React的React.FC與React.Component的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
React修改數(shù)組對(duì)象的注意事項(xiàng)及說(shuō)明
這篇文章主要介紹了React修改數(shù)組對(duì)象的注意事項(xiàng)及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
React在弱網(wǎng)環(huán)境下限制按鈕多次點(diǎn)擊,防止重復(fù)提交問(wèn)題
這篇文章主要介紹了React在弱網(wǎng)環(huán)境下限制按鈕多次點(diǎn)擊,防止重復(fù)提交問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
React Grid Layout基礎(chǔ)使用示例教程
React Grid Layout是一個(gè)用于在React應(yīng)用程序中創(chuàng)建可拖拽和可調(diào)整大小的網(wǎng)格布局的庫(kù),通過(guò)使用React Grid Layout,我們可以輕松地創(chuàng)建自適應(yīng)的網(wǎng)格布局,并實(shí)現(xiàn)拖拽和調(diào)整大小的功能,本文介紹了React Grid Layout的基礎(chǔ)使用方法,感興趣的朋友一起看看吧2024-02-02
react實(shí)現(xiàn)todolist的增刪改查詳解
這篇文章主要為大家介紹了react實(shí)現(xiàn)todolist的增刪改查,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-12-12
關(guān)于React中setState同步或異步問(wèn)題的理解
相信很多小伙伴們都一直在疑惑,setState 到底是同步還是異步。本文就詳細(xì)的介紹一下React中setState同步或異步問(wèn)題,感興趣的可以了解一下2021-11-11
詳解使用React全家桶搭建一個(gè)后臺(tái)管理系統(tǒng)
本篇文章主要介紹了使用React全家桶搭建一個(gè)后臺(tái)管理系統(tǒng),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
React?Hooks之usePolymerAction抽象代碼結(jié)構(gòu)設(shè)計(jì)理念
這篇文章主要為大家介紹了React?Hooks之usePolymerAction抽象代碼結(jié)構(gòu)設(shè)計(jì)理念,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09

