欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React?代碼拆分的幾種方法示例詳解

 更新時(shí)間:2023年03月06日 08:42:05   作者:杰出D  
這篇文章主要為大家介紹了React?代碼拆分的幾種方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前沿

當(dāng)我們項(xiàng)目越來越大的時(shí)候,代碼的體積會(huì)變得龐大,導(dǎo)致我們項(xiàng)目的加載速度變慢,特別是如果您包含大型第三方庫(kù)。您需要密切關(guān)注包含在bundle中的代碼,以免我們的項(xiàng)目體積太大,導(dǎo)致加載時(shí)間長(zhǎng),影響用戶體驗(yàn)。在React項(xiàng)目中,我們可以通過以下幾種方式對(duì)代碼進(jìn)行拆分,可以將代碼拆分成小的塊。讓我們的網(wǎng)站速度變快。

動(dòng)態(tài)加載(import)

es6提供import()函數(shù),它是運(yùn)行時(shí)執(zhí)行,也就是說,什么時(shí)候運(yùn)行到這一句,就會(huì)加載指定的模塊。
import()返回一個(gè) Promise 對(duì)象。在React中,我們可以這樣去做。通過打包工具,會(huì)在打包的過程中對(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>
  )
}

它和我們接下來要介紹的React.lazy還有些區(qū)別,可參考 loadable-components.com/docs/loadab…

React Lazy 和 React Suspense

React Lazy是react官方提供的解決方案,非常推薦使用該方案去做代碼拆分.需要React.Suspense配合, 該組件可以指定加載指示器(loading indicator),以防其組件樹中的某些子組件尚未具備渲染條件。使用方式如下

// 該組件是動(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é)束語

如果是新的項(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)文章

  • react路由守衛(wèi)的實(shí)現(xiàn)(路由攔截)

    react路由守衛(wèi)的實(shí)現(xiàn)(路由攔截)

    react不同于vue,通過在路由里設(shè)置meta元字符實(shí)現(xiàn)路由攔截。本文就詳細(xì)的介紹一下,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 解讀useState第二個(gè)參數(shù)的"第二個(gè)參數(shù)"

    解讀useState第二個(gè)參數(shù)的"第二個(gè)參數(shù)"

    這篇文章主要介紹了useState第二個(gè)參數(shù)的"第二個(gè)參數(shù)",具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React用法之高階組件的用法詳解

    React用法之高階組件的用法詳解

    高階組件也就是我們常說的HOC,是React中用于復(fù)用組件邏輯的一種高級(jí)技巧。這篇文章主要通過一些示例帶大家學(xué)習(xí)一下高階組件的使用,希望對(duì)大家有所幫助
    2023-04-04
  • 深入分析React源碼中的合成事件

    深入分析React源碼中的合成事件

    合成事件不是瀏覽器本身觸發(fā)的事件,自己創(chuàng)建和觸發(fā)的事件。本文將從源碼角度帶大家一起深入了解下React中的合成事件,需要的可以參考一下
    2022-11-11
  • React Hooks與setInterval的踩坑問題小結(jié)

    React Hooks與setInterval的踩坑問題小結(jié)

    本文主要介紹了React Hooks與setInterval的踩坑,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • react中關(guān)于函數(shù)調(diào)用()與bind this的原因及分析

    react中關(guān)于函數(shù)調(diào)用()與bind this的原因及分析

    這篇文章主要介紹了react中關(guān)于函數(shù)調(diào)用()與bind this的原因及分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • React狀態(tài)管理Redux原理與介紹

    React狀態(tài)管理Redux原理與介紹

    redux是redux官方react綁定庫(kù),能夠使react組件從redux store中讀取數(shù)據(jù),并且向store分發(fā)actions以此來更新數(shù)據(jù),這篇文章主要介紹了react-redux的設(shè)置,需要的朋友可以參考下
    2022-08-08
  • React子組件調(diào)用父組件的方法

    React子組件調(diào)用父組件的方法

    本文主要介紹了React子組件調(diào)用父組件的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • React Native時(shí)間轉(zhuǎn)換格式工具類分享

    React Native時(shí)間轉(zhuǎn)換格式工具類分享

    這篇文章主要為大家分享了React Native時(shí)間轉(zhuǎn)換格式工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 用React實(shí)現(xiàn)一個(gè)完整的TodoList的示例代碼

    用React實(shí)現(xiàn)一個(gè)完整的TodoList的示例代碼

    本篇文章主要介紹了用React實(shí)現(xiàn)一個(gè)完整的TodoList的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10

最新評(píng)論