React代碼分割

在React應(yīng)用中,我們通常是直接將某個模塊導(dǎo)入到頁面中,這樣做導(dǎo)致的結(jié)果是打包出來的包體積過大处坪。尤其是在引入了巨大第三庫的情況下疆股,會將第三方庫也直接打包進去费坊。因此我們需要關(guān)注我們的應(yīng)用中包含的代碼,避免因體積過大而導(dǎo)致加載時間過長旬痹。
對代碼進行分割能夠“懶加載”當(dāng)前所需要的內(nèi)容附井,能夠提升應(yīng)用的性能。盡管這樣并沒有減少應(yīng)用的整體代碼體積两残,但是可以避免加載當(dāng)前不需要的代碼永毅,在初始加載的時候可以減少所需加載的代碼量。
下面人弓,我們分別來介紹下在 React 中實現(xiàn)代碼分割的幾種方式沼死。

1、import()

import()是webpack提供的用于分割代碼的一種方法崔赌,該方法的返回結(jié)果是Promise意蛀,當(dāng)文件加載完成后會將模塊導(dǎo)出給promise.then方法的回調(diào)中耸别。

// 使用 import 動態(tài)導(dǎo)入模塊
import('./math').then((math) => {
    console.log(math.add(5, 10))
})

當(dāng) Webpack 解析到該語法時,會自動進行代碼分割

2县钥、React.lazy+React.Suspense

React.lazy 方法可以讓我們動態(tài)加載組件太雨,有助于縮減打包后 bundle 的體積,并延遲加載在初次渲染時未用到的組件

const AsyncComponent = React.lazy(() => import('./OtherComponent'));

React.lazy 返回的是一個異步組件 不能單獨使用魁蒜,需要配合 React.Suspense 使用囊扳。當(dāng)這個異步組件的狀態(tài)是 pending 時顯示的是 Suspense 中 fallback 的內(nèi)容,只有 resolve 時才會顯示加載好的組件兜看。如此使得我們可以在使用 lazy 組件時做優(yōu)雅降級(如在 fallback添加 loading 效果等)锥咸。

3、import()+React Loadable

React Loadable 是一個輕量級的代碼分割組件细移,它是一個高階組件搏予,能讓你的應(yīng)用程序在渲染之前動態(tài)的加載任何模塊。

4弧轧、UmiJS 按需加載

export default {
  dynamicImport: {},
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雪侥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子精绎,更是在濱河造成了極大的恐慌速缨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件代乃,死亡現(xiàn)場離奇詭異旬牲,居然都是意外死亡,警方通過查閱死者的電腦和手機搁吓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門原茅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人堕仔,你說我怎么就攤上這事擂橘。” “怎么了摩骨?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵通贞,是天一觀的道長。 經(jīng)常有香客問我仿吞,道長滑频,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任唤冈,我火速辦了婚禮峡迷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己绘搞,他們只是感情好彤避,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著夯辖,像睡著了一般琉预。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蒿褂,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天圆米,我揣著相機與錄音,去河邊找鬼啄栓。 笑死娄帖,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昙楚。 我是一名探鬼主播近速,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼堪旧!你這毒婦竟也來了削葱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤淳梦,失蹤者是張志新(化名)和其女友劉穎析砸,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谭跨,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡干厚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了螃宙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡所坯,死狀恐怖谆扎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芹助,我是刑警寧澤堂湖,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站状土,受9級特大地震影響无蜂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蒙谓,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一斥季、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦酣倾、人聲如沸舵揭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽午绳。三九已至,卻和暖如春映之,著一層夾襖步出監(jiān)牢的瞬間拦焚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工杠输, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赎败,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓抬伺,卻偏偏與公主長得像螟够,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子峡钓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容