울음참고 개발공부
728x90

 

 

1. ES 모듈

 

 

# 개념 

 

ES 모듈은 ECMAScript(자바스크립트 표준)에서 공식적으로 지원하는 모듈 시스템이다

-> js 파일을 여러개로 나누고 필요한 것만 가져다 쓸 수 있도록 도와주는 기능 ! 

 

 

# ES 모듈의 특징 

 

  • import 와 export 키워드를 사용해 모듈을 가져오거나 내보낼 수 있음
  • 브라우저에서 바로 실행할 수 있음 (번들링 없이 사용 가능) 
  • 기본적으로 비동기 로드(필요할 때 가져오는 방식) 지원

 

# 기본 ES 모듈 방식 사용 예시

 

export 

<javascript />
//math.js export function add(a,b) { return a+b; } export const c = 3;
<javascript />
// test.js export function age(birth) { return birth+1; }

 

 

import 

<javascript />
// main.js import { add } from "./math.js"; import { age } from "./test.js" console.log(add(2,3)); console.log(age(1990));

 

 

<html />
// index.html <script type="module" src=main.js"></script>

 

 

장점 

 

  • export,import 로 필요한 모듈만 가져다쓸 수 있음 -> 코드 최적화 

 

단점 

  • 파일이 많아질수록 네트워크 요청이 많아져 웹사이트 로딩 속도가 느려질 수 있음 
  • 캐싱 이슈
    • math.js 가 바뀌면 main.js도 다시 받아와야 함 

 

 

 

 

2. Vite 번들링 방식 

 

-> ES 모듈을 최적화해서 사용

 

 

Vite의 주요 최적화

 

1. 의존성(라이브러리) 사전 번들링

 

 Vite 는 처음 실행할 때 node_modules의 라이브러리를 하나의 최적화된 ES 모듈 번들로 변해둔다

 

( 예시 ) 

<javascript />
import Vue from 'vue';
  • 기본 ES 모듈 방식에서는 vue 내부의 여러 파일을 개별적으로 요청해야 함
  • Vite는 Vue 관련 파일을 하나로 묶어서 제공하므로 속도가 훨씬 빠름 

 

2. 동적 import 최적화 

  • Vite는 동적 import() 를 최적화해서 불필요한 네트워크 요청을 줄임
  • Webpack 처럼 미리 번들링 하지 않지만, 필요한 즉시 사용할 수 있도록 캐싱함 

 

3. HMR (Hot Module Replacement) 적용

  • 코드가 변경될 때 전체 페이지를 다시 로드하는 것이 아니라, 변경된 부분만 빠르게 교체함
  • 기본 ES 모듈 방식에서는 코드가 바뀌면 전체 페이지를 다시 로드해야 함 

 

 

장점

  • 모든 파일을 하나의 번들로 묶어서 한 번에 로드할 수 있으므로 빠른 로딩 속도 제공
  • 코드 최적화(압축, 중복 제거, 필요없는 코드 삭제 등) 기능 제공

 

 

3. 정리

  번들링 X ( 그냥 ESM ) Vite ( ESM 최적화)
특징 브라우저가 파일을 직접 요청 -> 요청 개수가 많아지면 로딩 느림 - 의존성을 미리 번들링하여 HTTP 요청을 줄이고 실행 속도를 빠르게 함
- 개발 중에도 변경된 코드만 빠르게 반영(HMR) 

 

 

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!