본문 바로가기

Programming/Node.js

4. Node 기능 살펴보기 (2) - 모듈 사용하기 : CommonJS 2

node js logo image

 

 

 

 

앞서 살펴본 아티클에서 CommonJS 모듈 실습을 위한 예제 코드를 작성했습니다. [var.js], [func.js]가 그것이죠. 아래와 같이 작성된 코드를 다시 한번 상기하도록 하겠습니다.

 

 

 

4. Node 기능 살펴보기 (2) - 모듈 사용하기 : CommonJS 1

노드에서는 (당연한 이야기이지만) 코드를 모듈로 만들 수 있습니다. 여기서 말하는 모듈은 - 특정한 기능을 수행하는 함수나 변수들의 집합 - 을 의미합니다. 이는 모듈 자체로서도 하나의 프로

nozeroslope.tistory.com

 

 

/* var.js */

const odd = 'CJS 홀수';
const even = 'CJS 짝수';

module.exports = {
    odd,
    even,
};

 

 

/* func.js */

const { odd, even } = require('./var');

function checkOddOrEven(num) {
    if (num % 2) {
        return odd;
    }
    return even;
}

module.exports = checkOddOrEven;

 

 

위 예제 코드를 다시 되짚어보겠습니다. 우선 [var.js]에서는 odd와 even이라는 변수를 module.exports 객체에 포함시켰습니다. 그리고 [func.js]에서는 (구조 분해 할당을 이용해) require('./var')를 사용해서 odd와 even이라는 변수를 선언했습니다. 참고로 구조 분해 할당이 아니더라도 const obj = require('./var');로 객체를 통째로 불러온 다음, obj.odd / obj.even으로 접근하는 것도 가능합니다.

 

그리고 불러온 모듈을 통해 odd와 even을 사용하는 checkOddOrEven이라는 함수도 선언했습니다. 마지막으로 다시 module.exports가 등장했습니다. 여기에는 위에서 선언한 checkOddOrEven을 할당했네요. 결과적으로 이 [func.js] 파일도 또 하나의 모듈이 되었습니다. 

 

참고로 module.exports에는 객체뿐만 아니라 함수, 변수도 대입이 가능하다는 것을 눈치채셨죠?

 

 

 


 

 

이제 마지막으로 [index.js]를 작성해 보겠습니다. 

 

const { odd, even } = require('./var');
const checkNumber = require('./func');

function checkStringOddOrEven(str) {
    if (str.length % 2){
        return odd;
    }
    return even;
}

console.log(checkNumber(10));
console.log(checkStringOddOrEven('hello'));

/* 출력
CJS 짝수
CJS 홀수
*/

 

 

[var.js]와 [func.js] 모듈을 모두 불러왔습니다. 참고로 [func] 모듈을 불러올 때는 checkNumber라는 변수로 할당했습니다. 이를 통해서 모듈로부터 값을 불러올 때, 변수 이름을 다르게 지정할 수 있다는 사실도 알 수 있습니다.