Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 동적 임포트(Dynamic Import) 완벽 가이드

JavaScript의 동적 임포트(Dynamic Import)는 모듈을 필요한 시점에 불러올 수 있게 해주는 강력한 기능입니다. 정적 import 문과 달리, 동적 임포트는 코드 실행 중에 조건부로 모듈을 로드할 수 있어 초기 페이지 로딩 속도를 개선하고 번들 크기를 줄이는 데 유용합니다.

동적 임포트란?

동적 임포트는 import() 함수 호출 형태로 사용하며, Promise를 반환합니다. 따라서 await 또는 .then()과 함께 사용할 수 있습니다. 버튼 클릭과 같은 사용자 이벤트가 발생했을 때 특정 모듈을 지연 로딩(lazy loading)하는 대표적인 패턴으로 활용됩니다.

예제 코드

다음은 버튼을 클릭하면 외부 모듈을 동적으로 가져와 결과를 화면에 표시하는 전체 예제입니다.

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
    body {
        font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
    }
    .result {
        font-size: 18px;
        font-weight: 500;
        color: rebeccapurple;
    }
</style>
</head>
<body>
<h1>JavaScript의 동적 임포트</h1>
<div class="result"></div>
<button class="Btn">클릭하세요</button>
<h3>
위 버튼을 클릭하면 모듈이 동적으로 임포트됩니다.
</h3>
<script>
    document.querySelector(".Btn").addEventListener("click", loadModule);
    let resEle = document.querySelector(".result");
    async function loadModule() {
        let test = await import("./sample.js");
        resEle.innerHTML += test.testImport() + "<br>";
        resEle.innerHTML += test.tellTime();
    }
</script>
</body>
</html>

코드 설명

  • 버튼 요소에 클릭 이벤트 리스너를 등록하여 loadModule 함수를 호출합니다.
  • loadModuleasync 함수로 선언되어 있으며, 내부에서 await import("./sample.js")를 통해 모듈을 비동기적으로 불러옵니다.
  • 가져온 모듈 객체의 testImport()tellTime() 메서드를 호출하여 그 결과를 .result 영역에 출력합니다.

실행 결과

위 코드를 실행하면 다음과 같은 화면이 나타납니다.

JavaScript 동적 임포트(Dynamic Import) 완벽 가이드

'클릭하세요' 버튼을 누르면 모듈이 동적으로 로드되고, 아래와 같이 모듈에서 반환된 값이 화면에 표시됩니다.

JavaScript 동적 임포트(Dynamic Import) 완벽 가이드

동적 임포트의 장점

  • 지연 로딩: 필요한 순간에만 모듈을 불러오므로 초기 로딩 시간이 단축됩니다.
  • 조건부 로딩: 사용자 권한, 브라우저 환경 등 조건에 따라 다른 모듈을 선택적으로 로드할 수 있습니다.
  • 코드 분할(Code Splitting): 웹팩(Webpack) 같은 번들러와 함께 사용하면 자동으로 코드 스플리팅이 적용되어 성능 최적화에 도움이 됩니다.