보통 프로그래밍하다보면 익숙하지 않은 코드를 보게 된다. 그런 코드를 분석하고 이해한다음 적용하려면 오랜 시간이 걸리는 경우가 허다하다. 프로그래밍 언어를 알고 있는다고 하더라도 그 언어를 통해서 만들어진 프레임워크는 만든사람마다 다양하기 때문이다. 여기서는 Node.js의 exports에 대해 살펴보도록 하겠다.
모듈은 코드의 한 단위라고 할 수 있다. 코드는 특정 파일에서 작성하고 동작될 수 있다. Node.js에서 특정 함수를 만들어 사용하는 예제를 살펴보자.
// greetings.js
sayHelloInEnglish = function() {
return "Hello";
};
sayHelloInSpanish = function() {
return "Hola";
};
두개의 함수를 가지는 greetings.js
파일을 이용해 볼 수 있다.
이 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
를 사용하고 있다.
결과적으로는 두개의 방법 모두 동일한 결과를 가져온다. exports
나 module.exports
가 동일한 객체를 참조한다.
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();
"어떤 것을 완전히 알려거든 그것을 다른 이에게 가르쳐라."
- Tryon Edwards -