Node.js-모듈

김명재·2023년 6월 29일
0
post-thumbnail

모듈(module)이란?

전체를 이루는 부품 하나하나 (node.js에서는 javascript파일 하나를 모듈 하나라고 생각하면 편하다.)

이런 모듈이 모여서 하나의 프로그램이 되기 때문에 하나의 모듈에서 다른 모듈에 있는 기능을 가져다 쓰는 법을 아는 것이 중요하다.


<math-tools.js >
  
function add(x,y){
  return x+y;
}

math-tools.js파일에 add라는 함수가 존재하고 나는 이 add라는 함수를 다른 js파일에서 사용하고 싶다.

이러 상황에서 다른 파일에서 add함수를 사용하기 위해선 먼저 math-tools모듈을 가져와야 하는데 이때 모듈을 가져오는것을 모듈을 로드한다라고 말한다.

require함수

이렇게 다른 모듈을 특정 모듈에서 로드할 때는 require이라는 함수를 사용한다.

그래서 실제로 main.js파일에서 require함수를 통해 math-tools.js 모듈을 로드해줄 수 있다.

<main.js>

const mathTool = require('./math-tools.js');

console.log(mathTool.add(1,2)) 

그런데 이렇게만 하면 올바르게 모듈이 로드 되지 않는다. 자신이 로드 되는 입장에 있는 math-tool.js에서도 특정한 조취를 취해야 한다.

exports

특정 기능을 외부 모듈에서 쓰기 위해 특정 기능이 있는 모듈에서 그 기능을 외부로 공개해야한다. 그때 쓰는 키워드가 exports이다.


<math-tools.js >
  
function add(x,y){
  return x+y;
}

exports.add = add;
//exports.모듈 외부로 공개할 이름= 모듈 내부에서 사용하고 있는 이름

이런식으로 적어야 add함수가 모듈 외부로 공개가 된다.

함수 뿐만 아니라 다양한 것들을 외부 모듈에 공개할 수 있고 또 만약 외부에 공개하고 싶은 것들이 여러개 라면 단순히 exports를 많이 써주는 것보다 한번에 모아서 외부 모듈에 공개할 수 있다.

module.exports


<math-tools.js >
  
let calculator = {
  PI:3.14,
  add:(a,b) => a+b,
  subtract:(a,b) => a-b,
}

module.exports = calculator;

여기서 알 수 있는 것은

  • exports -> 모듈 안에 있는 것들을 하나씩 공개

  • module.exports -> 공개하고 싶은 것들을 모은 객체를 외부에 공개

profile
steadyness is all time way

0개의 댓글