Develope Me!
[Node.js] Node.js - 모듈 시스템 본문
브라우저에서는 모듈 시스템을 구현하기 위해서 윈도우 컨텍스트를 사용하거나, RequireJS같은 의존성 로더를 사용한다.
개발자 도구를 켜서 window context를 사용해서 모듈을 정의해본다면 위처럼 정의할 수 있다. 예시처럼 브라우저에서는 window 객체(전역 객체)에 모듈을 정의하고 작성한 모듈을 호출해서 사용할 수 있다. 혹은 페이지 안에서 require.js 라이브러리를 호출하여 사용할 수도 있다.
하지만 node에서는 CommonJS 스펙을 사용하여 파일 형태로 모듈을 관리할 수 있다.
(Node.js 12부터는 ECMAScript Modules 라는 새로운 모듈 시스템이 추가되기도 했다. )
그러면 VSCode에 index.js 파일을 하나 만들어서 모듈을 테스트 해보자.
node에서는 기본으로 제공하는 다양한 모듈들이 있다. 기본 모듈에는 운영체제와 시스템의 정보를 가져올 수 있는 OS 모듈, url 정보를 객체로 가져와 분석하거나 url 객체를 문자열로 바꿔주는 기능 제공하는 url 모듈 등이 있으나 하나씩 다 사용해보기에는 양이 방대하므로 기본 모듈 중 'http' 모듈을 불러와서 테스트 해보려한다.
* Node.js 공식 API 문서(https://nodejs.org/api/)를 보면 다양한 모듈을 확인할 수 있다.
http 모듈을 사용하기 위해서는 http 변수에 require 메소드를 사용하여 http 모듈을 할당해준다.
그러면 http 모듈에서 제공해주는 다양한 메소드들을 사용할 수 있다.
기본으로 제공하는 모듈외에 서드파티(third-party) 즉, 제 3자가 제공하는 모듈을 사용하거나 직접 모듈을 만들어서 사용하는 방법도 있다.
테스트 하기 위해 매개변수로 들어온 수를 덧셈/뺄셈할 수 있는 모듈을 한 번 만들어보자.
앞서 node에서 모듈을 파일형태로 관리한다고 언급했으므로 math.js라는 파일을 하나 추가해보았다.
function minus(a, b) {
return a - b;
}
function plus(a, b) {
return a + b;
}
module.exports = {
minus: minus,
plus: plus,
};
파일에는 덧셈 뺄셈을 하는 함수를 각각 만들어준 뒤 module.exports()로 객체를 설정해준다.
다시 index.js 파일로 돌아가서 생성한 모듈을 사용해보자.
const math = require("./math.js");
const result1 = math.minus(50, 20);
const result2 = math.plus(50, 20);
console.log(
"두 수의 차는 " + result1 + "이며 두 수의 합은 " + result2 + "이다."
);
math 변수를 선언하여 math.js의 경로를 통해 모듈을 불러온다. 불러온 모듈에서 만들어두었던 minus() 메소드, plus()메소드의 결과 값을 찍어본다.
cmd 창으로 결과 값을 확인했을 때 정상적으로 값이 출력되었음을 확인할 수 있다.