사용자 정의 모듈: 모듈은 변수, 함수를 정의하는데, 내장객체인 exports를 이용해 모듈을 생성할 수 있다.
1. 모듈 생성하기
- 모듈은 module.exports 또는 exports 객체를 통해 정의하고 외부로 공개한다.
1. 변수를 모듈로 선언
new exports.productCode = 243506789;
new exports.productName = '컴퓨터';
2. 함수를 모듈로 선언
exports.plus = function(a, b){
return a+b;
}
exports.minus = (a,b) => {
return a-b;
}
exports.gugudan = function(dan){
let result = '';
for(var i=2; i<=9; i++){
result += dan + "*" + i + "=" + (dan*i) + "<br/>";
}
return result;
}
2. 모듈을 사용할 파일 생성(node05_custom_module_test.js)
let http = new require('http');
let myModule = new require('./node04_custom_module_create'); // 모듈 객체를 만든다.
let server = http.createServer(function(request, response){
}).listen(10003, function(){
console.log("server start.. http://127.0.0.1:10003");
});
require 키워드로 모듈을 생성한 파일의 경로를 입력해서 모듈 객체를 만든다.
임의 생성한 서버는 10003번
1. 응답할 폼을 작성한다.
response.writeHead, response.write, response.end를 이용
let http = new require('http');
let myModule = new require('./node04_custom_module_create'); // 모듈 객체를 만든다.
let server = http.createServer(function(request, response){
response.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
response.write('상품코드: ' + myModule.productCode + "<br/>");
response.write('상품명: ' + myModule.productName + "<br/>");
response.write('plus(100,400)=>'+ myModule.plus(100,400) + "<br/>");
response.write('minus(100,400)=>'+ myModule.minus(100,400) + "<br/>");
response.end('gugudan(3)<br/>'+ myModule.gugudan(3));
}).listen(10003, function(){
console.log("server start.. http://127.0.0.1:10003");
});
1. 이벤트 모듈 생성하기
- Node.js에서는 이벤트 모듈과 EventEmitter 클래스가 내장되어 있는데, 이를 사용하여 이벤트와 이벤트 핸들러를 연동시킬 수 있다.
- 이벤트 모듈을 사용하려면 require() 메서드를 이용하여 로드하고, 그 객체를 통해 EventEmitter 클래스를 로드하여 사용한다.
let http = new require('http');
let events = new requre('events'); (1)
let event_obj = new events.EventEmitter(); (2)
let server = http.createServer((req,resp)=>{
});
server.listen(10004, ()=>{
console.log('server start... http://127.0.0.1:10004');
});
(1) 이벤트가 정의되어 있는 events 모듈을 객체화한다. (event 모듈을 사용하기 위해)
(2) 이벤트 처리를 하기 위해서 모듈을 담고 있는 EventEmmiter객체를 초기화한다.
1. 이벤트가 발생 시 실행할 함수를 정의한다.
let http = new require('http');
let events = new require('events');
let event_obj = new events.EventEmitter();
// (1)
event_obj.on('call', ()=>{ // call이벤트가 발생하면 실행되는 곳
console.log('call 이벤트 발생!!!');
});
event_obj.addListener('call2',function(){ // call2이벤트가 발생하면 실행되는 곳
console.log('call2 이벤트 발생!!!!!');
});
event_obj.once('call3', function(){ // once는 이벤트를 한 번만 발생시킴
console.log('call3 이벤트 발생!!!!');
});
let server = http.createServer((req, resp)=>{
// (2)
event_obj.emit('call'); // call 이벤트가 발생하는 곳
event_obj.emit('call2');
event_obj.emit('call3');
// 응답할 페이지
resp.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
resp.end("<h1>이벤트 테스트</h1>");
});
server.listen(10004, ()=>{
console.log('server start... http://127.0.0.1:10004');
});
- addListener(event, listener) : on() 메소드와 동일, 이벤트를 생성하는 메서드
- on(event, listener) : addListener()과 동일, 이벤트를 생성하는 메서드
- once(event, listener) : 이벤트를 한 번만 연결한 후 제거
- event => 이벤트 종류, listener => 이벤트가 발생하면 실행될 함수
(1) 이벤트가 발생할 시 실행할 함수를 정의한다.
(2) 서버에 접속을 하면 이벤트를 발생시킨다.(event_obj를 통해서 발생)
- emit(event) : 이벤트를 강제로 발생시키는 함수 (event -> 이벤트 종류)
'멀티캠퍼스 풀스택 과정 > 백엔드' 카테고리의 다른 글
[Node.js] 4. 동기식과 비동기식으로 파일 읽기와 쓰기(with 이미지) (0) | 2022.03.31 |
---|---|
[Node.js] 3. 한 개의 서버로 여러 방법으로 접속하기 (0) | 2022.03.30 |
[Node.js] 1. 시작하기(서버 만들고 실행해보기) (0) | 2022.03.30 |
Spring:16 자료실 구현하기(자료실 목록보기, 등록하기)-2 (0) | 2022.03.22 |
Spring:15 자료실(다운로드, 업로드) DB설계, 환경변수설정 -1 (0) | 2022.03.22 |