1. 모듈화?
- app.js 하나에 코드를 다 때려박아 놓으면 분석하기가 매우 어려워진다.
- 기능별로 코드를 구분한 후 독립된 파일로 분리시키는 것이 효율적이다.
- 기본적으로 js 파일을 새로 만드는 것부터 모듈화는 시작된다.
- exports와 module.exports를 사용할 수 있다.
- module.exports를 사용하면 객체를 그대로 뽑아 쓸 수 있어서 훨씬 좋다.
- 심지어는 module.exports와 exports를 같이 쓰면 module.exports의 우선순위가 높아서 exports로 꺼내온 것은 무시된다.
- ==> module.exports를 쓰면 된다.
2. 모듈을 분리할 때 사용하는 전형적인 패턴
- 함수를 할당하는 경우
- 모듈 안에서 함수를 만들어 할당.
모듈을 불러온 후 소괄호를 붙여 모듈을 실행.
- 모듈 안에서 함수를 만들어 할당.
- 인스턴스 객체를 할당
- 모듈 안에서 인스턴수 객체를 만들어 할당.
모듈을 불러온 후 해당 객체의 메서드를 호출하거나 속성을 사용할 수 있음.
- 모듈 안에서 인스턴수 객체를 만들어 할당.
- 프로토타입 객체를 할당
- 모듈 안에서 프로토타입 객체를 만들어 할당
모듈을 불러온 후 new 연산자로 인스턴스 객체를 만들어 사용.
- 모듈 안에서 프로토타입 객체를 만들어 할당
인스턴스 객체를 할당하는 패턴
user.js
// module.exports에 인스턴스 객체를 만들어 할당
// 생성자 함수
function User(id, name) {
this.id = id;
this.name = name;
}
User.prototype.getUser = function() {
return {
id: this.id,
name: this.name
};
}
User.prototype.group = { id: 'group1', name: '친구' };
User.prototype.printUser = function() {
console.log('user 이름: %s, group 이름: %s', this.name, this.group.name);
}
module.exports = new User('test01', '퓨어');
test.js
var user = require('./user.js');
user.printUser();
이렇게 test.js에서 user.js의 new User를 가져와서 printUser()를 실행하게 되면 콘솔에 "user 이름: 퓨어, group 이름: 친구" 가 찍혀 나올 것이다.
프로토타입 객체를 할당하는 패턴
user.js
// module.exports에 인스턴스 객체를 만들어 할당
// 생성자 함수
function User(id, name) {
this.id = id;
this.name = name;
}
User.prototype.getUser = function() {
return {
id: this.id,
name: this.name
};
}
User.prototype.group = { id: 'group1', name: '친구' };
User.prototype.printUser = function() {
console.log('user 이름: %s, group 이름: %s', this.name, this.group.name);
}
module.exports = User;
이렇게 아예 생성자를 exports해버린다.
test.js
var User = require('./user');
var user = new User('test01', '퓨어');
user.printUser();
3. 설정 파일 만들기
- 모듈을 추가/제거할 때 메인 파일을 수정하지 않고도 변경된 모듈을 알기 위해서는 설정 파일을 따로 만들어 두는 것이 좋다.
- 서버 실행에 필요한 설정, 데이터베이스 연결에 필요한 설정, 라우터 정보 분리 등.
'Backend > node.js' 카테고리의 다른 글
9. 서버 배포에 도움이 되는 기능 (0) | 2022.04.20 |
---|---|
8. passport로 사용자인증 (0) | 2022.04.20 |
6. Postgresql을 node.js에 연결하기 (0) | 2022.04.19 |
5. 노드로 웹 서버 만들기 (0) | 2022.04.19 |
4. 노드의 기본 기능 (1) | 2022.04.19 |