반응형

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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기