Node.js는 다양한 모듈을 지원한다. 그래서 모든 모듈을 외운다는 것은 거의 불가능하다.
이에 Node.js 문서를 보고 모듈을 사용하는 방법을 알아보자.
Node.js 문서 : http://nodejs.org/api/
1. os 모듈
- 운영체제 관련한 모듈을 사용할 수 있다.
- os 모듈을 사용하려면 require('os')를 사용해야 한다.
[ 메서드 ]
- hostname() : 운영체제의 호스트 이름을 리턴한다.
- type() : 운영체제의 이름을 리턴한다.
- platform() : 운영체제의 플랫폼을 리턴한다.
- arch() : 운영체제의 아키텍처를 리턴한다.
- release() : 운영체제의 버전을 리턴한다.
- uptime() : 운영체제가 실행된 시간을 리턴한다.
- loadavg() : 로드 에버리지 정보를 담은 배열을 리턴한다.
- totalmem() : 시스템의 총 메모리를 리턴한다.
- freemem() : 시스템의 사용 가능한 메모리를 리턴한다.
- cpus() : CPU의 정보를 담은 객체를 리턴한다.
- getNetworkInterfaces() : 네트워크 인터페이스의 정보를 담은 배열을 리턴한다.
[ 코드 ]
//모듈을 추출한다.
var os = require('os');
//모듈을 사용한다.
console.log(os.hostname());
console.log(os.type());
console.log(os.platform());
console.log(os.arch());
console.log(os.release());
console.log(os.uptime());
console.log(os.loadavg());
console.log(os.totalmem());
console.log(os.freemem());
console.log(os.cpus());
console.log(os.getNetworkInterfaces());
[ 실행 ]
2. url 모듈
- url 관련 한 모듈을 사용할 수 있다.
- url 모듈을 사용하려면 require('url')을 사용해야 한다.
//모듈을 추출한다.
var url = require('url');
[ 메서드 ]
- parse(urlStr, [, parseQueryString=false, slashesDenoteHost=false]) : URL 문자열을 URL 객체로 변환해 리턴한다.
- format(urlObj) : URL 객체를 URL 문자열로 변환해 리턴한다.
- resolve(from, to) : 매개변수를 조합하여 완전한 URL 문자열을 생성해 리턴한다.
[ 코드 ]
//모듈을 추출한다.
var url = require('url');
//모듈을 사용한다.
var parsedObject = url.parse('http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=node.js&x=0&y=0');
console.log(parsedObject);
[ 실행 ]
3. Query String 모듈
- URL객체의 쿼리와 관련된 모듈이다.
//모듈을 추출한다.
var querystring = require('querystring');
[ 메서드 ]
- stringify(obj[, sep='&', eq='=']) : 쿼리 객체를 쿼리 문자열로 변환해 리턴한다.
- parse(str[, sep='&', eq='=']) : 쿼리 문자열을 쿼리 객체로 변환해 리턴한다.
[ 코드 ]
//모듈을 추출한다.
var url = require('url');
var querystring = require('querystring');
//모듈을 사용한다.
var parsedObject = url.parse('http://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=node.js&x=0&y=0');
console.log(querystring.parse(parsedObject.query));
[ 실행 ]
4. util 모듈
- node.js의 보조적인 기능을 모아둔 모듈이다.
[ 코드 ]
//모듈을 추출한다.
var util = require('util');
[ 메서드 ]
- format() : 매개변수로 입력한 문자열을 조합해 리턴한다.
※ console.log() 메서드와의 차이점은 출력하지 않고 문자열을 반환하는 것이다.
[ 코드 ]
//모듈을 추출한다.
var util = require('util');
//모듈을 사용한다.
var data = util.format('%d + %d = %d', 52, 273, 52 + 273);
console.log(data);
[ 실행 ]
5. crypto 모듈
- 해시 생성과 암호화를 수행하는 모듈이다.
- 해시는 다른 문자열이라도 같게 나올 수 있다. 따라서 해시를 원래 값으로 되돌리는 것은 완전히 불가능하다.
[ 코드 - 해시 생성 ]
//모듈을 추출한다.
var crypto = require('crypto');
//해시를 생성한다.
var shasum = crypto.createHash('sha1');
shasum.update('crypto_hash');
var output = shasum.digest('hex');
//출력한다.
console.log('crypt_hash:', output);
[ 실행 - 해시 생성 ]
[ 코드 - 암호화 ]
//모듈을 추출한다.
var crypto = require('crypto');
//변수를 선언한다.
var key = 'test'; //아무도 알지 못하는 나만의 비밀 키를 입력한다.
var input = 'PASSWORD'; //암호화할 문자
//암호화
var cipher = crypto.createCipher('aes192', key);
cipher.update(input, 'utf8', 'base64');
var cipheredOutput = cipher.final('base64');
//암호화 해제
var decipher = crypto.createDecipher('aes192', key);
decipher.update(cipheredOutput, 'base64', 'utf8');
var decipheredOutput = decipher.final('utf8');
//출력한다.
console.log('원래 문자열: ' + input);
console.log('암호화: ' + cipheredOutput);
console.log('암호화 해제: ' + decipheredOutput);
[ 실행 - 암호화 ]
6. File System 모듈
- 파일 처리에 관련된 모듈이다.
[ 메서드 ]
- readFile(file, encoding, callback) : 파일을 비동기적으로 읽는다.
- readFileSync(file, encoding) : 파일을 동기적으로 읽는다.
- writeFile(file, data, encoding, callback) : 파일을 비동기적으로 쓴다.
- writeFileSync(file, data, encoding) : 파일을 동기적으로 쓴다.
※ 예제를 시작하기 전에 "textfile.txt" 파일을 만들어 간단한 내용을 입력하여 저장한다.
6.1 파일 읽기
6.1.1 readFileSync()
- 매개변수에 파일 경로와 인코딩 방식을 지정한다.
[ 실행 ]
6.1.2 readFile()
- readFileSync() 메서드를 비동기적으로 구현한 메서드이다.
- readFile() 메서드를 만나는 순간 이벤트 리스너를 등록하고 파일을 모두 읽으면 이벤트 리스너를 실행한다.
- 파일을 정상적으로 읽으면 콜백 함수의 두 번째 매개변수에 읽은 데이터를 전달한다.
[ 실행 ]
6.2 파일 쓰기
- writeFile() 메서드와 writeFileSync() 메서드를 사용하는 예제를 보겠다.
[ 실행 ]
6.3 예외 처리
- 파일을 읽고 쓰는 일은 굉장히 위험한 일이다. 파일을 읽으려고 하는데 파일이 존재하지 않을 경우 프로그램은 예외가 발생해 곧바로 종료된다.
- 또한 파일을 쓸 수 없는 위치에 파일을 쓰려고 하면 예외가 발생해 곧바로 프로그램이 종료된다.
- 따라서 예외 처리를 하여 프로그램이 비정상적으로 종료되지 않도록 한다.
[ 실행 - 동기 처리하는 메서드의 예외 처리 ]
[ 코드 - 비동기 처리하는 메서드의 예외 처리 ]
//모듈을 추출한다.
var fs = require('fs');
//파일을 읽는다.
fs.readFile('textfile.txt', 'utf8', function (error, data) {
if (error) {
console.log(error);
} else {
console.log(data);
}
});
//파일을 쓴다.
fs.writeFile('textfile.txt', 'Hello World .. !', 'utf8', function (error) {
if (error) {
console.log(error);
} else {
console.log('FILE WRITE COMPLETE');
}
});
[ 실행 - 비동기 처리하는 메서드의 예외 처리 ]
'Node.js' 카테고리의 다른 글
Node.js http 모듈 (0) | 2014.11.05 |
---|---|
Node.js 이벤트 (0) | 2014.07.06 |
Node.js 전역 객체 (0) | 2014.06.25 |
맥에서 Node.js 설치하기 (0) | 2014.06.23 |
Node.js 개요 (0) | 2014.06.14 |