Node.js의 모듈 exports에 대하여

보통 프로그래밍하다보면 익숙하지 않은 코드를 보게 된다. 그런 코드를 분석하고 이해한다음 적용하려면 오랜 시간이 걸리는 경우가 허다하다. 프로그래밍 언어를 알고 있는다고 하더라도 그 언어를 통해서 만들어진 프레임워크는 만든사람마다 다양하기 때문이다. 여기서는 Node.js의 exports에 대해 살펴보도록 하겠다.

모듈(Module)이란 무엇인가?

모듈은 코드의 한 단위라고 할 수 있다. 코드는 특정 파일에서 작성하고 동작될 수 있다. Node.js에서 특정 함수를 만들어 사용하는 예제를 살펴보자.

// greetings.js
sayHelloInEnglish = function() {
  return "Hello";
};

sayHelloInSpanish = function() {
  return "Hola";
};

두개의 함수를 가지는 greetings.js 파일을 이용해 볼 수 있다.

모듈 export하기 

이 greetings.js 파일을 이용하기 위해서 몇가지 방법이 있다. 

// greetings.js
var exports = module.exports = {};

1) 첫 라인에 module.exports를 사용하는 방법이나,

// greetings.js
// var exports = module.exports = {};
        
exports.sayHelloInEnglish = function() {
  return "HELLO";
};
   
exports.sayHelloInSpanish = function() {
  return "Hola";
};

2) 각 함수에 exports를 사용하는 방법이 있다. 이 코드에서는 module.exports 대신에 exports 를 사용하고 있다. 

결과적으로는 두개의 방법 모두 동일한 결과를 가져온다.  exportsmodule.exports 가 동일한 객체를 참조한다.

모듈 import하기

main.js 라는 파일에 greetings.js 를 임포트하도록 해보자. 다음과 같은 단계로 진행한다.

Node.js 코드에서 require 키워드를 사용해 다음과 같이 정의할 수 있다.

var require = function(path) {

  // ...

  return module.exports;
};

main.js에서 greetings.js 넣는다면:

// main.js
var greetings = require("./greetings.js");

위 코드는 다음의 풀어쓴 코드와 동일하다. 

// main.js
var greetings = {
  sayHelloInEnglish: function() {
    return "HELLO";
  },
       
  sayHelloInSpanish: function() {
    return "Hola";
  }
};

따라서 greetings을 main.js에서 하나의 프로퍼티처럼 이용할 수 있게 된다.

// main.js
var greetings = require("./greetings.js");

// "Hello"
greetings.sayHelloInEnglish();
        
// "Hola"  
greetings.sayHelloInSpanish();

References

 

youngdeok's picture

Language

Get in touch with us

"If you would thoroughly know anything, teach it to other."
- Tryon Edwards -