🤔모듈 시스템은 JavaScript 프로그래밍, Node.js 환경에서 중요한 부분입니다. 모듈은 코드를 분리하고 재사용하기 쉽게 만들어주며 만약 프로젝트가 거대해질 경우에는 기능 별로 나눠서 관리하기 해야하는데 이 때 모듈 시스템은 정말 좋은 방법중에 하나입니다.
JavaScript에서 모듈을 내보내고 가져오는 주요 방법은 ES6 모듈 (import
/export
)과 CommonJS 모듈 (require
/module.exports
) 시스템입니다.
프로젝트 디렉토리 생성:
mine
이라는 이름으로 디렉토리를 만들었습니다.NPM 초기화 (npm init
):
npm init
명령을 실행합니다. 해당 과정이 종료되면 package.json
파일이 생성됩니다.의존성 설치 (npm install
):
npm install <패키지명>
명령을 통해 설치할 수 있습니다. 저는 그냥 npm install
만 해주었습니다.package.json
에 "type": "module"
을 추가할 수 있습니다. 🫠ES6 모듈 시스템에서는 import
와 export
키워드를 사용하여 모듈을 가져오고 내보냅니다.
내보내기 (Export):
// first.js
export function first() {
console.log('first!!!');
}
😑 여기서 first
함수는 export
키워드를 사용하여 다른 파일에서 사용할 수 있도록 내보내집니다.
가져오기 (Import):
// 다른 파일
import { first } from './first.js';
first(); // 'first!!!' 출력
import
구문을 사용하여 first.js
파일에서 first
함수를 가져와서 사용할 수 있습니다.
package.json에 "type":"module"
가 적혀 있는지 확인해 주시면 됩니다.
😎CommonJS 문법입니다. 여기서는 require
와 module.exports
를 사용합니다.
내보내기 (Module.exports):
// second.js
function second() {
console.log('second!!!');
}
module.exports = second;
second.js
파일에서 second
함수를 module.exports
에 할당하여 내보냅니다.
가져오기 (Require):
// 다른 파일
const second = require('./second');
second(); // 'second!!!' 출력
require
함수를 사용하여 second.js
파일에서 second
함수를 가져옵니다.
2개 이상 내보내기-
만약 2개 이상의 값을 내보내고 싶다면 아래와 같이 사용하시면 됩니다.
function second() {
console.log('second!!!');
}
function second1() {
console.log('second 2 !!!');
}
module.exports = {second,second1};
import
const {second,second1} = require('./second.cjs');
second();
second1();
구조 분해 할당 방식으로 가져와 사용할 수 있습니다.
😰package.json에 "type":"module"
이 있을 경우 ES6로 동작하기 때문에 exports가 동작하지 않을 수 있습니다. 이런 경우 확장자를 .cjs로 변경하시고 나서 사용하시면 됩니다.
CommonJS 모듈 시스템에서는 exports
객체를 사용하여 여러 함수나 변수를 내보낼 수 있습니다.
내보내기 (Exports):
// third.js
function third() {
console.log('third!!!');
}
function third2() {
console.log('thrid 2 !!!');
}
exports.third = third;
exports.third2 = third2;
third
함수를 exports
객체의 속성으로 추가합니다.
가져오기 (Require with Exports):
// 다른 파일
const obj = require('./third');
obj.third(); // 'third!!!' 출력
obj.third2();// thrid 2 !!! 출력
🤓require
를 사용하여 third.js
파일을 가져오고, obj.third
로 함수를 호출합니다.