프로그래밍에서 모듈이란 코드들의 묶음이라고 볼 수 있다.
높은 독립성을 바탕으로 기능적으로 구분될 수 있는 단위로 묶은 코드들을 좋은 모듈화를 구현했다고 볼 수 있다.
모듈이란 기능적으로 구분될 수 있는 코드들을 높은 독립성을 가질 수 있도록 묶어놓은 코드 묶음이므로 모듈간의 결합도가 낮다.
이로 인해 수정이 필요한 경우 연관 있는 모듈만 업데이트함으로써 최소한의 작업을 통해 유지보수가 가능하다.
JavaScript에서 top-level function의 scope 밖 변수들은 글로벌 변수로서 어디서든 접근이 가능하다.
이는 프로그램 규모가 커짐에 따라 디버깅을 어렵게 하는 요인이 되는데, 모듈을 사용함으로써 변수들을 위한 private 공간을 만들 수 있다.
여기 저기서 사용되는 동일한 기능에 대해 별도로 모듈화하여 어디서든 필요에 의한 재사용이 가능하다.
예약어 ? 프로그래밍 언어에서 사용되고 있거나 사용될 예정인 단어 (await, break, catch, const 등)
// serach.js
const getWord = () => {};
module.exports = {
getWord
};
// index.js
const searchModule = require('./search.js');
searchModule.getWord();
module.exports를 exports로도 사용 가능하다.
- module.exports는 빈 객체를 참조
- exports는 module.exports 참조
- require는 module.exports를 리턴받음
// export default
const getWord = () => {};
export default getWord;
// import
import getWord from 'searchJS';
// export {}
const getWord = () => {};
export { getWord };
// import
import {getWord} from 'searchJS';
- default export는 모듈 내에서 한 번만 사용 가능하다.
- named export는 여러 번 사용 가능하다.