
애플리케이션을 구성하는 개별적 요소로서 재사용이 가능한 코드 조각을 의미
일반적으로 모듈은 기능을 기준으로 파일 단위로 분리하며, 이때 모듈이 성립하려면 모듈은 자신만의 파일 스코프(모듈 스코프)를 가질 수 있어야 한다.
자신만의 파일 스코프를 갖는 모듈의 모든 자산은 캡슐화되어 다른 모듈에서 접근할 수 없다. 즉, 모듈은 개별적 존재로서 애플리케이션과 분리되어 존재한다.
모듈에서 특정 자산을 외부에 공개할 때 사용하는 키워드
모듈은 독자적인 모듈 스코프를 가진다. 따라서 모듈 내부에서 선언한 모든 식별자는 기본적으로 해당 모듈 내부에서만 참조할 수 있다.
하지만 모듈은 애플리케이션이나 다른 모듈에 의해 재사용되어야 의미가 있다. 따라서 모듈은 공개가 필요한 자산에 한정하여 명시적으로 선택적 공개가 가능하다. 이를 export 라 한다.
export const name = 'Sean';
export function greet() {
console.log('Hello!');
}
default : 모듈에서 단 하나의 값을 공개할 때 사용하는 키워드export default function sayGoodbye() {
console.log('Goodbye!');
}
다른 모듈에서 공개된 자산을 불러와 사용할 때 사용하는 키워드
공개된 모듈의 자산을 이용하는 모듈을 모듈 사용자(module consumer)라 하며, 모듈 사용자는 모듈이 공개(export)한 자산 중 일부 또는 전체를 선택해 자신의 스코프 내로 불러들여 재사용할 수 있다. 이를 import 라 한다.
**import { name, greet } from './module.js';
greet();**
default 로 공개된 자산을 가져올 경우import sayGoodbye from './module.js'
sayGoodbye();
이처럼 모듈은 코드의 단위를 명확히 분리하여 애플리케이션을 구성할 수 있고, 재사용성이 좋아서 개발 효율성과 유지보수성을 높일 수 있다.