본문 바로가기
개발/Node.js

[Node.js] 모듈화 방법 - exports, module.exports

by 윤호 2021. 1. 22.

목차

  • exports로 모듈화 하기
  • module.exports로 모듈화 하기

exports로 모듈화 하기 (추천하지 않는 방법)

exports 객체 속성으로 함수 또는 객체를 추가할 수 있습니다. 

// exports 객체 속성으로 함수 추가
exports.getUser = function(){
	return {id : 'test01', name : '짱구'};
};

// exports 객체 속성으로 객체 추가
exports.group = {id : 'group01', name : '친구'};

user1.js

 

추가한 모듈을 require로 불러와 사용할 수 있습니다.

// require() 메소드는 exports 객체를 반환함
var user1 = require('./user1'));

console.log(user1.getUser().name + '는 ' + user1.group.name);
// 짱구는 친구

 

이렇게 exports는 속성으로 함수나 객체를 추가할 수 있습니다. 하지만 exports 자체에 함수나 객체를 할당하면 모듈로 사용할 수 없습니다. 그렇게 할 경우 exports는 해당 파일에서만 사용 가능한 변수로 바뀝니다.

 

함수나 객체를 직접 할당하기 위해선 module.exports를 사용해야합니다.

 

또한 exports와 module.exports를 함께 사용하면 exports는 무시되기 때문에 exports를 사용하는건 추천되지 않습니다.

module.exports로 모듈화 하기

var user = {
    getUser : function(){
    return {id : 'test01', name : '짱구'};
    },
    group : {id : 'group01', name : '친구'};
}

// user 객체를 그대로 할당함
module.exports = user;

user2.js

 

// require() 메소드는 user 객체를 반환함
var user2 = require('./user2'));

console.log(user2.getUser().name + '는 ' + user1.group.name);
// 짱구는 친구

위의 코드는 exports로 모듈화 하기에서 본 코드와 결과가 똑같이 나옵니다.

 

module.expots에 프로토타입 객체를 할당할 수도 있습니다.

// User 생성자
function User(id, name){
	this.id = id;
	this.name = name;
}

User.prototype.printUser = function(){
	console.log(this.id + '은 ' + this.name);
}

// 프로토타입 객체 할당
module.exports = User

 

var user = require('/user3');
var user = new User('jjang01', '짱구');

user.printUser();
// jjang01은 짱구

Reference

  • Do it! Node.js 프로그래밍

 

 

 

댓글