Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 46 additions & 1 deletion Week18/Chapter48/수지.md
Original file line number Diff line number Diff line change
@@ -1 +1,46 @@
ㅇㅇ
# 48.1 모듈의 일반적 의미

- 모듈
- 애플리케이션을 구성하는 개별적 요소
- 재사용 가능한 코드 조각
- 기능을 기준으로 파일 단위로 분리
- 자신만의 파일 스코프(모듈 스코프)를 가질 수 있어야 함
- 모듈은 개별적 존재로서 애플리케이션과 분리되어 존재함
- 애플리케이션과 분리되어 개별적으로 존재하다가 필요에 따라 다른 모듈에 의해 재사용됨
- 코드의 단위를 명확히 분리 → 재사용성, 개발 효율성, 유지 보수성 향상
- export
- 공개가 필요한 자산에 한정하여 명시적으로 선택적 공개 가능
- export된 모듈의 자산은 다른 모듈에서 재사용 가능
- import
- 모듈 사용자는 모듈이 export한 자산 중 일부 또는 전체를 선택해 자신의 스코프 내로 불러들여 재사용 가능

# 48.2 자바스크립트와 모듈

- 클라이언트 사이드 자바스크립트는 script 태그를 사용하여 외부의 자바스크립트 파일을 로드할 수는 있지만 파일마다 독립적인 파일 스코프를 갖지 않음
- 하나의 자바스크립트 파일 내에 있는 것처럼 동작함
- 모든 자바스크립트 파일은 하나의 전역을 공유함
- CommonJS, AMD
- 브라우저 환경에 국한하지 않고 범용적으로 사용하려는 움직임
- Node.js 환경에서는 파일별로 독립적인 파일 스코프를 가짐

# 48.3 ES6 모듈(ESM)

- ES6에서는 클라이언트 사이드 자바스크립트에서도 동작하는 모듈 기능을 추가했음
- script 태그에 type=’module’ 어트리뷰트 추가 → 로드된 자바스크립트는 모듈로서 동작함
- mjs 확장자 권장

## 48.3.1 모듈 스코프

- ESM은 독자적인 모듈 스코프를 가짐
- 모듈 내에서 var 키워드로 선언한 변수는 더는 전역 변수가 아니며 window 객체의 프로퍼티도 아님
- 모듈 내에서 선언한 식별자는 모듈 외부에서 참조 불가능

## 48.3.2 export 키워드

- 모듈 내부에서 선언한 식별자를 외부에 공개하여 다른 모듈들이 재사용할 수 있게 하려면 export 키워드 사용
- 선언문 앞에 매번 export 키워드를 붙이는 것이 번거롭다면 export 할 대상을 하나의 객체로 구성하여 한 번에 export 가능

## 48.3.3 import 키워드

- 다른 모듈에서 export한 식별자를 자신의 모듈 스코프 내부로 로드하려면 import 키워드 사용
- 다른 모듈이 export한 식별자 이름으로 import 해야 함 (변경해서도 import 가능)
12 changes: 11 additions & 1 deletion Week18/Chapter49/수지.md
Original file line number Diff line number Diff line change
@@ -1 +1,11 @@
ㅇㅇ
# 49.1 Babel

- ES6+/ES.NEXT로 구현된 최신 사양의 소스코드를 IE 같은 구형 브라우저에서도 동작하는 ES5 사양의 소스코드로 변환(트랜스파일링)할 수 있음
- 트랜스파일링
- 하이레벨 언어 A → 하이레벨 언어 B

# 49.2 Webpack

- 의존 관계에 있는 자바스크립트, CSS, 이미지 등의 리소스들을 하나(또는 여러 개)의 파일로 번들링하는 모듈 번들러
- 의존 모듈이 하나의 파일로 번들링되므로 별도의 모듈 로더가 필요 없음
- 여러 개의 자바스크립트 파일을 하나로 번들링하므로 HTML 파일에서 script 태그로 여러 개의 자바스크립트 파일을 로드해야 하는 번거로움도 사라짐