node.js를 보면서.. 모듈을 로드 하는데..
참.. 다양하게 모듈이 구성되어 있더군요..
이게 뭔가 싶을 정도로....
그래서 유형별로 정리를 해 봤습니다.
people이라는 모듈을 읽어서 say라는 함수를 실행하는 코드 입니다.
test.js
var people = require('./people');
people.say('Hello World');
모듈 #1
people.js
exports.say = function(message) {
console.log(message);
};
모듈 #2
people.js
var people = module.exports = function(){};
people.say = function(message) {
console.log(message);
};
모듈 #3
people.js
var people = module.exports = {
say : function(message) {
console.log(message);
}
};
모듈 #4
people.js
module.exports = Object.create({
say : function(message) {
console.log(message);
}
});
참 다양하죠?
이런저런 소스를 보다 보면.. 뭐가 이리 달라 싶더라구요..
이번에는 초기화 값을 줘 가면서 하는 방법입니다.
제가 본 방법은 2가지 정도 방법입니다.
방법 #1
클래스를 사용하듯이 전달하기..
test.js
var People = require('./people');
var people = new People('bread');
people.say('Thank you!');
people.js
module.exports = function(gift) {
this.gift = gift;
this.say = function(message) {
console.log(this.gift);
console.log(message);
};
};
방법 #2
변수를 exports로 설정하고, parent로 받기...
test.js
var gift = exports.gift = "bread";
var people = require('./people');
people.say('Thank you!');
people.js
var parent = module.parent.exports,
gift = parent.gift;
exports.say = function(message) {
console.log(gift);
console.log(message);
};
exports로 배열도 사용해 보죠~
test.js
var people = require('./people.js');
console.log('who : ' + people[3]);
people.js
module.exports = ['kim', 'lee', 'park', 'shin', 'choi'];
우선, 사용하면서 본 유형들을 정리해 봤습니다.
혹시.. 보다시다.. 다른방법을 아시면 댓글로 공유해 주세요~
댓글