[Node.js_6기] 본캠프 TIL_0830

2024. 8. 30. 23:03[Node.js_6기 본캠프 TIL]

▶  Node.js에서 사용하는 모듈(Module)이란?

특정한 기능을 가진 여러 개의 함수와 변수들을 모아놓은 Javascript를 파일을 말하며, 그 자체로 하나의 프로그램이자 부품으로 사용할 수 있다. 보통 하나의 모듈만 사용하지는 않으며, 하나의 모듈에서 다른 모듈을 호출하여 사용할 수 있다. 코드의 재사용성과 유지보수성을 증가시킨다는 특징이 있다.

 

- 모듈을 사용하는 이유?

1) 코드 베이스를 분리할 수 있는 만큼, 전체 코드를 구조적으로 관리할 수 있다.

2) 모듈화(modularize): 자주 사용하는 코드들을 재사용 가능하게 만들어준다. 

3) 정보은닉 구현: 코드의 일부만 외부에 노출시킬 수 있다.

4) 해당 모듈이 참조하고 있는 다른 모듈에 대한 종속성을 관리할 수 있다.

 

 

▶  모듈 시스템 알아보기

Javascript 엔진은 모듈을 로딩하는 방식을 지원하는데, 이를 크게 정적 모듈 로딩 방식과 동적 모듈 로딩 방식으로 나눌 수 있다.

 

- 정적 모듈 로딩 방식

모든 모듈을 한 번에 로딩하여 메모리에 올리는 방식이다. 모듈 간의 의존성 관계를 미리 파악하고, 로딩 순서를 지정해야 한다. 초기 로딩 시간이 오래 걸리지만, 실행 중에 모듈을 동적으로 로딩할 필요가 없는 만큼 일관된 동작을 보장한다.

 

- 동적 모듈 로딩 방식

비동기적으로 로딩하고, 로딩이 완료된 후에 해당 모듈을 사용하는 방식이다. 즉, 특정 모듈이 필요한 시점에 해당 모듈만 동적으로 로딩하는 것이다. 초기 로딩 시간이 줄어들고, 모듈 간의 의존성을 동적으로 관리할 수 있다는 장점이 있다.

 

▶  Node.js 환경에서 주로 사용하는 모듈 시스템

- CJS(CommonJS)

Node.js 환경에서 기본적으로 사용되는 모듈 시스템이다. 따로 설정하지 않으면 기본적으로 사용하게 된다. require 함수를 사용하여 다른 모듈을 불러오며, 경로 혹은 문자열을 가지고 내부 알고리즘을 통해 모듈을 가져오고 종속성을 처리한다는 특징이 있다.

 

- ESM(ECMA Script Module)

최신 JavaScript에서 지원하는 모듈 시스템이다. 모든 Javascript 환경에서 통합적인 인터페이스를 제공하기 위해 시작된 체계이며, CommonJS와는 달리 정적(Static)으로 모듈을 가져오며 비동기적 모듈 로딩과 순환 종속을 처리한다.

 

*순환 종속이란?

A 모듈에서 b 함수를 참조하고, B 모듈에서 a 함수를 참조하는 등 2개 이상의 모듈이 서로 종속된 상태를 말한다. 모듈 시스템의 데이터 로딩 방식 등에 따라 원치 않는 결과가 도출되기도 한다.

 

 

 

 

참고 자료:

http://disq.us/t/4kltkuv