- JS 파일단위로 분리 된 코드 (특정기능을 가진 함수와 변수의 집합)
1. Module은 하나의 md에서 다른 md를호출하여 사용가능
2. Md은 그 자체로 하나의 프로그램이면서 다른 부픔으로도 사용 가능
3. 보통 1개 파일이 1 MD <img src = 'https://user-images.githubusercontent.com/114923190/209467650-8400e1a4-58e1-414e-974d-9c103da1b643.png' width = '500'>
1. Code base를 분리할 수 있으며, 이를통해 코드를 구조적으로 관리할 수 있음
2. 코드를 재사용가능하게 만들어 줌 즉, modularize 모듈화 가능
3. 모듈의 interface만 노출시킬 수 있음 (정보은닉 구현 'information hiding')
4. 종속성 관리
브라우져 이외의 환경에서 사용할 수 있도록 고안되었고 Node.JS에서는 CJS를 기본으로 사용
- 모든 JS환경에서 통합적인 인터페이스를 제공하기 위해 시작된 체계
- CJS와는 다르게 정적 모듈을 가져오면서 비동기적 로딩과 순환종속을 처리함 <img src = 'https://user-images.githubusercontent.com/114923190/209467664-63c376d8-0466-45ef-aa84-7883b9077144.png' width = '500'>
- export 명령어를 변수 / 함수 앞에 붙이면 외부 모듈에서 해당 변수 / 함수에 접근 가능해짐
- import / require 명령어를 사용하면 외부 모듈의 기능을 가져올 수 있음
1) JS는대표적으로 CJS, ES6방식으로 모듈시스템 관리
2) require는 CJS로 모듈 시스템을 관리
3) import는 ES6로 모듈시스템을 관리할 때 사용