node 2일차
1.기본 모듈
- Node.js와 함께 설치
- 별도의 설치 과정 불필요
홈페이지에서 doc를 보면 확인 할 수 있다
1) 주요 기본 모듈
- 프로세스 환경
os,process, cluster
- 파일과 경로 ,URL
?fs, path, URL, querystring, stream
- 네트워크 모듈
http,https,net,dgram.dns
2. 전역 객체
- 별도의 모듈 로딩 없이 사용
- global 모듈
global.console.log()
- global 생략 가능
console.log()
1) 주요 전역 객체
(1) Process
- 애플리케이션 프로세스 실행 정보
env: 애플리케이션 실행환경
version : node.js 버전
arch, platform : CPU와 플랫폼 정보
argv: 실행 명령 파라미터
- 이벤트
exit : 애플리케이션 종료 이벤트
beforeEXit :종료 되기 전에 발생하는 이벤트
uncaughtException : 예외 처리되지 않은 예외 이벤트
- 함수
exit: 애플리케이션 종료
nextTick : 이벤트 루프 내 동작을 모두 실행 후 콜백 실행
- 결과
- process.env: { TERM_PROGRAM: 'iTerm.app',
SHELL: '/bin/bash',
TERM: 'xterm-256color',
PWD:'/Users/wannabewize/Projects/TAcademy/NodeSamples/BasicModules',
ITERM_PROFILE: 'Default',
HOME: '/Users/wannabewize',
LOGNAME: 'wannabewize',
LC_CTYPE: ‘UTF-8' }
- process.arch: x64
- process.platform: darwin
(2) 프로세스 실행 환경
-실행 파라미터 얻기
process.argv
실행 환경
$ node processAdd.js 3 5
결과
0, 1은 node, processAdd.js
var i = process.argv[2];
var j = process.argv[3];
var sum = parseInt(i) + parseInt(j);
console.log(sum); // 8
3. 타이머
- 지연 동작 : setTimeout
- 반복 동작 : setInterval
1) Timeout
일정 시간 뒤 호출
- setTimeout(callback,delay,arg,..)
- clearTimeout()
파라미터
- callback :함수형태
- delay : 초 (milli second)
- arg: callback 함수의 파라미터
ex)예제 코드
function sayHello() {
console.log('Hello World');
}
// 3초뒤 실행
setTimeout(sayHello, 3*1000);
타이머 취소
var t = setTimeout(sayHello, 10);
clearTimeout(t);
- 반복
setInterval(callback, delay, arg, …)
clearInterval()
ex)예제
function sayGoodbay(who) {
console.log('Good bye', who);
}
setInterval(sayGoodbay, 1 * 1000, 'Friend');
4. 콘솔
- 콘솔
로그 남기기
실행 시간 측정
- 수준별 로그 남기기
console.info()
console.log()
console.warn()
console.error()
- 커스텀 콘솔
콘솔 타입 로딩
var Console =require('console').Console;
콘솔 객체 생성
new Console(stdout[,stderr])
파라미터 : 출력 스트림
stdout : 표준 출력 스트림 ,info,log
stderr: 에러 출력, warn,error
파일로 로그 남기는 커스텀 콘솔
var output=fs.creatWriteStream('./stdout.log);
var errorOutput = fs.createWriteStream('./stderr.log');
var logger = new Console(output, errorOutput);
- 실행시간 측정
콘솔 객체로 실행 시간 측정하기
시작 시점 설정하기
console.time(TIMER_NAME)
종료시점 설정하기
console.timeEnd(TIMER_NAME)
ex
// 시간 측정 시작
console.time('SUM’);
var sum = 0;
for(var i = 1 ; i < 10000 ; i++ ) {
sum += i;
}
// 시간 측정 시작
console.timeEnd(‘SUM');
5. 유틸리티 모듈
모듈 로딩
var util= require('util);
주요 기능
문자열 포맷
상속
is 함수(deprecate)
1)유틸리티 -포맷
util.format(format[,..])
- placeholer
%s, %d, %j(json)
2) 유틸리티 - 상속
상속: inherits
util.inherits(constructor, superConstructor)
예제
function Parent() {
}
function Child() {
}
util.inherits(Child, Parent);
function Parent() {
}
Parent.prototype.sayHello = function() {
console.log('Hello. from Parent Class');
}
function Child() {
}
util.inherits(Child, Parent);
var child = new Child();
child.sayHello();
6 . 이벤트
이벤트 모듈
- 이벤트 다루기 : EvetEmitter
- 이벤트를 다루는 기능 제공
1) node.js 애플리케이션의 이벤트들
- 이벤트의 예
클라이언트의 접속 요청
소켓에 데이터 도착
파일 오픈/읽기 완료
- 이벤트 처리
비동기 처리
리스너 함수
2) 이벤트를 다룰 수 있는 타입 :Readline 모듈
타입에 정의 된 이벤트 다루기
이벤트 리스너 함수 등록
emitter.addLisener(event,listener)
emitter.on(event,listener)
emitter.once(event,listener)
예제
process.on('exit', function() {
console.log('occur exit event');
});
// 한번만 동작
process.once('exit', function() {
console.log('occur exit event');
});
3) 이벤트 리스너 함수 삭제
emitter.removeLister(event,listener)
emitter.removeAllListeners([event])
최대 이벤트 핸들러 개수 (기본 10개)
emitter.setMaxListeners(n)
? emitter.getMaxListeners()
4) 이벤트 발생
-이벤트 발생 시키기 ( emit )
emitter.emit(event[, arg1][, arg2][, …])
event : 이벤트 이름
arg : 리스너 함수의 파라미터
emit 함수 호출 결과 : true(이벤트 처리), false(이벤트 처리 안됨)
5) 커스텀 이벤트
- EventEmitter 객체에 커스텀 이벤트
var customEvent = new event.EventEmitter();
customEvent.on('tick', function() {
console.log('occur custom event');
});
customEvent.emit('tick');
6) 커스텀 이벤트 ,상속
-util 모듈을 이용해서 EventEmitter 상속
var Person = function(){};
// 상속
var util = require(‘util');
var EventEmitter = require(‘events').EventEmitter;
util.inherits(Person, EventEmitter);
// 객체
var p = new Person();
p.on('howAreYou', function() {
console.log('Fine, Thank you and you?’)
});
// 이벤트 발생
p.emit('howAreYou');
* 리스너 함수 ,에러
모든 리스너 함수의 첫번째 파라미터 : 에러
- 에러 처리
emitter.on(‘event’, function(error, result) {
if ( error ) {
// 에러 처리
}
else {
// 정상 처리
}
}
'Web development > Backend & Server' 카테고리의 다른 글
[NODE.JS]NODE.JS 4일차 (0) | 2018.01.08 |
---|---|
[NODE.JS]NODE.JS 3일차 (0) | 2018.01.04 |
[Node.js]Node.js 1일차 (0) | 2017.12.31 |
[PHP] Section 28 문자열 조작 (0) | 2017.09.13 |
[PHP]Chapeter 1 오리엔테이션과 첫걸음 (0) | 2017.08.06 |