주소 문자열과 요청 파라미터 다루기
- 웹 사이트의 주소 정보는 노드에서 URL 객체 로 만들 수 있다.
URL 모듈
로 주소 문자열을 URL 객체로 만들거나 URL 객체를 일반 문자열로 변환이 가능하다. (require('url')
)
http://heowc.tistory.com/?page=1
↓ ↑
parse URL 모듈 format
↓ ↑
protocol : http
host : heowc.tistory.com
query : page=1
...
- 요청 파라미터가
&
로 구분되는 값은querystring 모듈
을 이용할 수 있다.
이벤트 이해하기
- 노드는 대부분 이벤트를 기반으로 하는 비동기 방식으로 처리한다.
- 이벤트를 주고 받을 때,
EventEmitter
를 사용한다. (require('events').EventEmitter
) on
,emit
,once
,removeListener
등 메소드가 있다.process
객체는 내부적으로EventEmitter
를 상속 받고 있어, 메소드를 사용할 수 있다.util 모듈
에 있는 inherits() 를 이용하면 쉽게EventEmitter
를 상속할 수 있다. (04.calc.js)
파일 다루기
- 파일 시스템은 동기식 IO 와 비동기식 IO 모두 제공한다.
- 동기식 IO 메소드는 postfix로 Sync가 붙인다.
require('fs')
-
파일을 직접 열고 닫으면서 읽거나 쓸 경우, 반드시
open -> (write | read) -> close
순서로 호출한다. - 데이터 단위가 아닌 스트림 단위로 처리도 가능하다. (
createReadStream()
,createWriteStream()
) pipe()
는 두 스트림을 연결하는 역할을 한다.
로그 파일 남기기
- 로그를 보관하기 위해서 여러 외부 모듈를 사용한다.
winston 모듈
로 여러 설정(로그 레벨, 파일 크기, 단위 로그 파일, 파일 갯수 등)이 가능하다.- 로그 레벨은 debug > info > notice > warning > error > crit > alert > emerg 순이다.
winston-daily-rotate-file 모듈
과moment 모듈
을 함께 사용한다.
> npm install winston --save
> npm install winston-daily-rotate-file --save
> npm install moment --save