lazy import

gotcha!!·2023년 11월 10일
0

React

목록 보기
13/15

리액트로 개발이 다 끝나면 npm run build를 입력해서 코드들을 html,css,js파일로 변환해야한다.
근데 리액트는 Single Page Application의 특징을 갖고 있기에, html,js파일이 하나만 생성이된다.
한 파일에 모든 코드들이 다 쑤셔넣어지니 당연히 파일사이즈가 클 수 밖에 없다.
그래서 리액트 사이트들은 첫 페이지 로딩속도가 매우 느릴 수 있다.

이런점을 개선하고 싶으면 import문법을 살짝 손보면 된다.

예를들어, 메인페이지에서 A라는 컴포넌트와 B라는 컴포넌트를 import 해서 쓰고 있을 때, 만약 A,B라는 컴포넌트가 메인페이지에서 전혀 보이지 않고 있기에 필요가 없으면?

(App.js)
import {lazy, Suspense, useEffect, useState} from 'react'

const A = lazy( () => import('./routes/A.js') )
const B = lazy( () => import('./routes/B.js') )

이렇게 lazy import를 적용시켜주면 된다.
이러면 A라는 컴포넌트가 필요할 때 import해주고, A 컴포넌트 내용을 다른 js파일로 알아서 쪼개줌으로써, 첫 페이지 로딩속도를 향상시킬 수 있다.

lazy를 사용하면 당연히 A 컴포넌트 로드까지 지연시간이 발생할 수 있다.
그럴 땐
1. Suspense 라는거 import 해오고

  1. A 컴포넌트를 감싸면

A 컴포넌트가 로딩중일 때 대신 보여줄 html 작성도 가능하다.

<Suspense fallback={ <div>로딩중임</div> }>
  <A shoes={shoes} />
</Suspense>

근데 그냥 Routes 위에다가 Suspense를 전부 다 감싸는 게 괜찮을 거 같다.

profile
ha lee :)

0개의 댓글

관련 채용 정보