Develope Me!

[Node.js] Node.js - 모듈 시스템 본문

JavaScript/Node.js

[Node.js] Node.js - 모듈 시스템

코잘알지망생 2024. 3. 6. 14:55

브라우저에서는 모듈 시스템을 구현하기 위해서 윈도우 컨텍스트를 사용하거나, RequireJS같은 의존성 로더를 사용한다. 

window context

 

개발자 도구를 켜서 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 창으로 결과 값을 확인했을 때 정상적으로 값이 출력되었음을 확인할 수 있다. 

 

Comments