본문 바로가기

JavaScript/Node.js

[책] 디자인 패턴 바이블 정리 - 2

2장 - 모듈 시스템

 

모듈은 주요 애플리케이션들을 구조화하기 위한 부품. 코드베이스를 개별적으로 개발 가능하고 테스트 가능한 작은 유닛으로 나누게 해줌.

 

1. 모듈의 필요성

- 구조적 관리 가능, 코드 재사용, 은닉성, 종속성 관리

 

2. JS와 Node.js의 모듈 시스템

- Node.js는 브라우저가 아닌 환경에서 JS 모듈 시스템을 제공할 수 있도록 고안된 CommonJS의 명세를 구현하게 되었다. 

- 2015년에 ECMAScript Modules를 위한 공식적인 제안이 나오게 되었다. Node.js는 버전 13.2부터 ESM에 대한 안정적인 지원을 한다.

 

3. 모듈 시스템과 패턴

- JS는 네임스페이스가 없다. 내부 애플리케이션 코드나 종속성 라이브러리가 기능을 노출시키는 동시에 스코프를 오염시킬 수 있다. 이런 문제를 해결하기 위한 보편적인 기법이 노출식 모듈 패턴이다.

 

4. CommonJS 모듈

- require는 로컬 파일 시스템으로부터 모듈 임포트 가능하게 해줌

- exports와 module.exports는 현재 모듈에서 공개될 기능들을 내보내기 위해서 사용된다.

- 자세한 내용은 책 참고. 한번 따로 정리해 보는것도 좋을 듯 하다.

 

5. 모듈 정의 패턴

- API 디자인과 관련된 문제들의 경우 고려해야 할 주요 요소는 private 함수와 public 함수간의 균형이다.

 

6. ESM - ECMAScript 모듈

- CommonJS와 가장 큰 차이점 - static이다. 

- 제어 구문 내에 포함될 수 없다.

- 자세한 내용은 책 참고. 한번 따로 더 정리하자!

 

추가 정리 필요한 부분

- CommonJS 모듈 동작 방식, ESM 동작 방식