티스토리 뷰
[주소 문자열과 요청 파라미터 다루기]
- url 모듈을 이용해 주소 문자열을 객체로 만들면 문자열 안에 있던 각각의 정보를 나누어 그 객체의 속성으로 보관한다.
- https://www.asdf.com?query=actor
- protocol : "https"
- host : "www.asdf.com"
- query : "query=actor"
- require('url')
- parse() : 주소 문자열을 파싱하여 URL 객체를 만들어줌
- format() : URL 객체를 주소 문자열로 변환
- 요청 파라미터는 & 기호로 구분되는데, querystring 모듈을 사용하여 요청 파라미터를 쉽게 분리할 수 있다.
- require('querystring')
- parse() : 요청 파라미터 문자열을 파싱하여 요청 파라미터 객체로 만들어줌
- stringfy() : 요청 파라미터 객체를 문자열로 변환
- querystring으로 파싱하면 주소 문자열의 ? 이후 부분이 분리되어 JSON 형태로 반환된다.
- 그러므로 각 요청 파라미터 값에 .으로 접근 가능하다.
[이벤트 이해하기]
- 노드는 대부분 이벤트를 기반으로 하는 비동기 방식으로 처리하며, 비동기 방식으로 처리하기 위해 서로 이벤트를 전달한다.
- EventEmitter 는 이벤트를 주고받는 방법을 제공한다.
- require('event').EventEmitter
- 노드의 객체는 EventEmitter 를 상속받을 수 있고, on(), emit() 메소드를 사용할 수 있다.
- on(event, listener) : 지정한 이벤트의 리스너 추가
- once(event, listener) : 지정한 이벤트의 리스너를 추가, 한 번 실행한 후에는 자동으로 리스너가 제거됨
- emit() : 이벤트를 다른 쪽으로 전달
- removeListener(event, listener) : 지정한 이벤트에 대한 리스너 제거
[파일 다루기]
- 파일을 다루는 기능 / 디렉토리를 다루는 기능
- 동기 IO(Sync 단어가 붙음) / 비동기 IO
- require('fs')
- readFile(filename, [encoding], [callback]) : 비동기식 IO로 파일을 읽어들임
- readFileSync(filename, [encoding]) : 동기식 IO로 파일을 읽어들임
- writeFile(filename, data, encoding='utf8', [callback]) : 비동기식 IO로 파일을 씀
- writeFileSync(filename, data, encoding='utf8') : 동기식 IO로 파일을 씀
- 일반적으로 비동기 방식 메소드를 사용한다.
- 에러가 없으면 err에 null이 들어감
- 위의 방식으로 쉽게 파일을 읽거나 쓸 수 있으나 실제로는 한꺼번에 모든 데이터를 읽거나 쓰지 않고 조금씩 읽거나 쓰는 방식을 사용할 수 있다.
- 다른 곳에서 받아 온 데이터를 파일에 쓰는 경우도 있다.
- open(path, flags [, mode] [, callback]) : 파일 엶
- read(fd, buffer, offset, length, position [, callback]) : 지정한 부분의 파일 내용을 읽음
- write(fd, buffer, offset, length, position [, callback]) : 파일의 지정한 부분에 데이터를 씀
- close(fd [, callback]) : 파일 닫음
- 콜백 안에서 파일 디스크립터를 받고 Buffer 객체에 쓸 데이터를 저장하여 파일을 쓰는 모습이다. 콜백에 콜백이 꼬리를 문다...
- Buffer 객체는 바이너리 데이터를 읽고 쓰는 데 사용한다.
- Buffer 인스턴스를 만들 때 크기를 지정한 후 문자열을 쓰는 방식으로 만들 수도 있고, 문자열을 매개변수로 넘겨 만들 수도 있다.
- copy(), concat() 사용 가능
- 데이터 단위가 아닌 스트림 단위로 파일을 읽거나 쓸 수 있다.
- createReadStream(path [, options]) : 파일을 읽기 위한 스트림 객체 만듦
- createWriteStream(path [, options]) : 파일을 쓰기 위한 스트림 객체 만듦
[로그 파일 남기기]
- winston 외부 모듈을 사용하여 로그를 보관할 수 있음
'Node.js > Do it!' 카테고리의 다른 글
7장 익스프레스 프로젝트를 모듈화하기 (0) | 2018.08.15 |
---|---|
6장 데이터베이스 사용하기 (6) | 2018.08.12 |
5장 웹 서버 만들기 (0) | 2018.06.27 |
3장 노드의 자바스크립트와 친해지기 (0) | 2018.06.26 |
2장 노드 간단하게 살펴보기 (0) | 2018.06.26 |