지난 '[kr-dev] node.js 학습 일지 #1'에 이어 node.js 학습이 2편을 포스팅합니다.
검색의 편의를 위해 제목을 개발을 공부하게 된 계기인 [맨땅에서 스팀봇까지] 연재와 맞추어 [맨땅에서 스팀봇까지 번외편 node.js]로 변경합니다. 아무래도 kr-dev에서 맨땅 씨리즈를 많이 만들게 되지 않을까 싶습니다. ^^
자바스크립트 (100p)
콜백함수
- 자바스크립트 언어적 특성에 의해 함수의 인자로 함수를 넣을 수 있음
- 함수에서 어떤 처리를 마치고 다시 후처리를 위한 함수 자체를 인자에 넣음으로써 비동기 프로그래밍이 가능
- function add(a, b, callback) // callback은 함수로 된 인자
프로토타입 객체
- 자바스크립트 언어적 특성에 의해 함수 자체도 객체가 될 수 있음
- 즉, 객체를 담는 변수에 함수를 값을 할당하듯 할당 할 수 있음
- Person.walk = function() {...} // work는 Person 객체의 내부 변수
노드의 기본 기능
주소문자열과 요청 파라미터
- var url = require('url'); //url 모듈
- var sample = 'https://www.google.co.kr/search?q=테스트';
- var curURL = url.parse(sample); // sample주소를 url 객체로 만듬 (url객체 내용)
Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'www.google.co.kr',
port: null,
hostname: 'www.google.co.kr',
hash: null,
search: '?q=테스트',
query: 'q=테스트',
pathname: '/search',
path: '/search?q=테스트',
href: 'https://www.google.co.kr/search?q=테스트' }
- var strURL = url.format(curURL); // url 객체를 문자열로 표시
- querystring = requre('querystring'); //querystring모듈
- var param = querystring.parse (curURL.query)
이벤트 이해하기
- 이벤트 등록: on()
- 이벤트 전달: emit()
- 한번만 실행: once()
- 이벤트 제거: removeListener()
- var EventEmitter = require('events').EventEmitter;
파일 다루기
- var fs = require('fs);
- 동기 읽기: fs.readFileSync()
- 비동기 읽기: fs.readFile()
- 동기 쓰기: fs.writeFileSync()
- 비동기 쓰기: fs.writeFile()
- 기타 직접 파일에 접근: open(), read(), write(), close() - 사용할 일 없을 듯
로그파일 남기기
- 기본: console.log() or console.error()
- 외부 모듈 활용: var winston = require('winston');
- winston 로그 수준 - debug:0 > info:1 > warning:3 > error:4 > crit:5 > alert: 6 > emerge: 7
ps.
이책에서 여기까지가 프로그래밍에 대한 개요와 자바스크립트 언어의 기초에 대한 설명이고, 다음부터는 웹서버 등의 보다 어플리케이션 적인 내용들이 나오네요.
개발환경을 만들고 이런저런 실습을 하다보니 들인 시간에 비해서 포스팅 양이 좀 적습니다. 어째든, node.js 를 공부해보실 생각이 있으신 분들은 어서 탑승하시죠.
특히 기초가 튼튼해야 하니 위에서 언급된 함수나 객체들을 꼭 한번은 만들고 호출해 보면서 감을 익히는시는게 좋을 것 같습니다.
그나저나 자바스크립트가 자유도가 상당히 높은 것 같군요. 함수를 인자나 객체로 취급하는 부분이나, 이벤트리스터를 거의 아무데나 가져다 붙일 수 있는 점이 인상적입니다.
3편에서는 '웹 서버 만들기(134p)' 에서 시작합니다.