iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
自我挑戰組

React自我學習心得30天~系列 第 17

Day17 淺談Code-Splitting

  • 分享至 

  • xImage
  •  

當我們在開發專案時,模組的體積會隨著功能的增加而變的龐大,甚而影響到使用者的體驗,這時候就需要做所謂的Code Splitting。Code Splitting的概念為以下兩點:

  1. 將不常變動或更新的程式獨立打包出來,讓瀏覽器讀取快取而不用重新讀取全部的程式
    可以將不常更動的第三方套件獨立出來,如React之類。
  2. 依照功能模組打包你的程式,且在使用該功能時才去載入模組
    可以減少程式初始化時下載的內容。

import()

使用動態import()的語法,可以讓你在使用該功能時才載入程式。
引入前:

import { add } from './math';

console.log(add(16, 26));

引入後:

import("./math").then(math => {
  console.log(math.add(16, 26));
})

React.lazy

React.lazy可以幫助你讓程式做到動態載入,使用方法為React.lazy渲染一個動態import()的component。
引入前:

import OtherComponent from './OtherComponent';

引入後:

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

lazy component需要在 Suspense component中渲染,Suspense component可已讓等待載入的component顯示loading文字,等待程式載入完畢。

import React, { Suspense } from 'react';

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

function MyComponent() {
  return (
    <div>
      <Suspense fallback={<div>Loading...</div>}>
        <OtherComponent />
      </Suspense>
    </div>
  );
}

上一篇
Day16 Fragment
下一篇
Day18 Refs 和 DOM
系列文
React自我學習心得30天~30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言