앱을 구성하는 개별적 요소로 재사용 가능한 코드 조각이다.
흔히 사용하는 export / import를 생각하면 된다.
NodeJS에서 채택한 방식이다.
라이브러리로 사용하는 CommonJS와는 100% 같은 방식은 아니지만, 비슷한 시스템을 지원하고 있다.
파일별로 독립적인 파일 스코프를 갖는다.
모듈 파일 확장자 이름도 모듈이라는 걸 표현하기 위해 .mjs를 사용한다.
<script type="module" src="./app.mjs" />
타입을 표기해야 모듈로 동작한다.
또한, strict mode가 적용되어 파일 스코프가 작동한다.
"type": "module";
export default class app {
//...
};
import app from './app.js';
import app as APP from './app.js';
export const app2 = {
//...
};
import {app2} from './app2.js';
import {app2 as APP2} from './app2.js';
export {app3, app4, app5};
import {app3, app4, app5} from './app5.js';
export default를 할 대상은 let, const, var를 사용할 수 없다.