From 20869d4f85b97bae4d58bf7b542ff9e186372feb Mon Sep 17 00:00:00 2001 From: innerstella Date: Thu, 20 Jun 2024 13:54:44 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=B0=A8=EC=88=98=EC=A7=80]=20Week18?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Chapter48/\354\210\230\354\247\200.md" | 47 ++++++++++++++++++- .../Chapter49/\354\210\230\354\247\200.md" | 12 ++++- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git "a/Week18/Chapter48/\354\210\230\354\247\200.md" "b/Week18/Chapter48/\354\210\230\354\247\200.md" index bb71e12..c0a42d8 100644 --- "a/Week18/Chapter48/\354\210\230\354\247\200.md" +++ "b/Week18/Chapter48/\354\210\230\354\247\200.md" @@ -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 가능) diff --git "a/Week18/Chapter49/\354\210\230\354\247\200.md" "b/Week18/Chapter49/\354\210\230\354\247\200.md" index bb71e12..7167e4c 100644 --- "a/Week18/Chapter49/\354\210\230\354\247\200.md" +++ "b/Week18/Chapter49/\354\210\230\354\247\200.md" @@ -1 +1,11 @@ -ㅇㅇ +# 49.1 Babel + +- ES6+/ES.NEXT로 구현된 최신 사양의 소스코드를 IE 같은 구형 브라우저에서도 동작하는 ES5 사양의 소스코드로 변환(트랜스파일링)할 수 있음 +- 트랜스파일링 + - 하이레벨 언어 A → 하이레벨 언어 B + +# 49.2 Webpack + +- 의존 관계에 있는 자바스크립트, CSS, 이미지 등의 리소스들을 하나(또는 여러 개)의 파일로 번들링하는 모듈 번들러 +- 의존 모듈이 하나의 파일로 번들링되므로 별도의 모듈 로더가 필요 없음 +- 여러 개의 자바스크립트 파일을 하나로 번들링하므로 HTML 파일에서 script 태그로 여러 개의 자바스크립트 파일을 로드해야 하는 번거로움도 사라짐