코드 분할

코드 분할

: 빌드-번들링 시 파일 분리(하나로 압축)

애플리케이션 크기가 커지면 번들 파일도 커집니다.

이 시점에서 분할은 대용량 파일 발생 문제를 해결할 수 있습니다.

예를 들어

react로 구현된 페이지가 main / login / about으로 구성된 spa를 구현할 때

메인 페이지에 진입하는 동안 사용자는 다른 페이지 정보를 요구하지 않습니다.

이때 webpack은 동기적으로 로드할 청크 파일을 생성합니다.

그리고 로그인 모듈이 필요한 상황이 발생하면 청크 파일을 비동기적으로 불러와 로그인 모듈을 사용할 수 있도록 한다.

다시 말해서,

코드 분할 사용

필요한 모듈만 로드하여 초기 로딩 시간 단축 및 애플리케이션 성능 향상


자동 코드 분할

next.js 또는 cra는 자동 코드 분할을 지원합니다.

이렇게

// before
import { add } from './math';
console.log(add(16, 26));

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

자동으로 지원되는지 아니면 빌드시 자동으로 변경되는지 궁금합니다.

채팅을 요청했습니다GPT



next.js, cra는 스스로 변경한다고 합니다.


React에서 지원하는 코드 분할

React.lazy / 서스펜스

//Before

import OtherComponent from './OtherComponent';


//After

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

이 컴포넌트가 처음 렌더링될 때 포함된 번들을 자동으로 로드합니다.

+

이를 이용하여 서스펜스를 이용하여 페이지 변경 시 로딩 페이지를 열 수 있습니다.

import React, { Suspense } from 'react';

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

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

이렇게 포장하면 페이지가 바뀔 때마다 로딩 페이지가 멈춥니다.

import React, { Suspense } from 'react';

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

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

++

코드 분할

지연 로딩

돕다

+ 뒤에 추가됨

https://helloinyong.297#title-0

참조 소스:

https://legacy.reactjs.org/docs/code-splitting.html

https://velog.io/@sjpark960520/%EC%BD%94%EB%93%9C-%EC%8A%A4%ED%94%8C%EB%A6%AC%ED%8C%85코드 분할 %EA%B3%BC-React.lazy

https://devowen.com/342