모듈이란 특정한 기능을 하는 함수나 변수들의 집합이다.
코드의 일부분을 재사용 가능한 개별적인 부분으로 분리한 것이다.
관련 기능과 데이터를 하나로 묶어 독립된 구성 요소로 만들어 가독성, 관리성, 재사용성 등을 개선하는데 도움이 된다.
자체로도 하나의 프로그램이면서 다른 프로그램의 부품으로 사용할 수 있다.
// hello.js
function sayHello(name) {
console.log('Hello, ' + name);
}
module.exports = sayHello;
// app.js
const sayHello = require('./hello.js');
sayHello('Asher'); // Hello, Asher
2015년 자바스크립트에 import/export라는 모듈 개념이 도입되었지만, 브라우저에는 구현되지 않아서 사용할 수 없었다.
크롬 60 버전부터 브라우저에서 모듈을 사용할 수 있게 되었다.
ES2015가 도입되면서 자바스크립트도 자체 모듈 시스템 문법이 생겼다. 노드 9 버전부터 사용할 수 있다.
require 대신 import / module.exports 대신 export default 를 사용한다.
하지만, 파일 확장자를 mjs로 지정해야하는 제한이 있다.
js 확장자 파일에서 사용하려면, package.json 에 type: 'module' 속성을 넣으면 된다.
참고 - Node.js 교과서 [저자 조현영]