본문 바로가기

Node.js

Node.js 기본 내장 모듈



Node.js는 다양한 모듈을 지원한다. 그래서 모든 모듈을 외운다는 것은 거의 불가능하다.

이에 Node.js 문서를 보고 모듈을 사용하는 방법을 알아보자.


Node.js 문서 : http://nodejs.org/api/



1. os 모듈

  • 운영체제 관련한 모듈을 사용할 수 있다.
  • os 모듈을 사용하려면 require('os')를 사용해야 한다.

[ 코드 ]
//모듈 추출
var 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 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 모듈

  • 파일 처리에 관련된 모듈이다.
[ 코드 ]
//모듈을 추출한다.
var fs = require('fs');


[ 메서드 ]

  • readFile(file, encoding, callback) : 파일을 비동기적으로 읽는다.
  • readFileSync(file, encoding) : 파일을 동기적으로 읽는다.
  • writeFile(file, data, encoding, callback) : 파일을 비동기적으로 쓴다.
  • writeFileSync(file, data, encoding) : 파일을 동기적으로 쓴다.


※ 예제를 시작하기 전에 "textfile.txt" 파일을 만들어 간단한 내용을 입력하여 저장한다.


6.1 파일 읽기

6.1.1 readFileSync()

  • 매개변수에 파일 경로와 인코딩 방식을 지정한다.
[ 코드 ]
//모듈을 추출한다.
var fs = require('fs');

//모듈을 사용한다.
var text = fs.readFileSync('textfile.txt', 'utf8');
console.log(text);


[ 실행 ]


6.1.2 readFile()

  • readFileSync() 메서드를 비동기적으로 구현한 메서드이다.
  • readFile() 메서드를 만나는 순간 이벤트 리스너를 등록하고 파일을 모두 읽으면 이벤트 리스너를 실행한다.
  • 파일을 정상적으로 읽으면 콜백 함수의 두 번째 매개변수에 읽은 데이터를 전달한다.
[ 코드 ]
//모듈을 추출한다.
var fs = require('fs');

//모듈을 사용한다.
fs.readFile('textfile.txt', 'utf8', function (error, data) {
console.log(data);
});


[ 실행 ]


6.2 파일 쓰기

  • writeFile() 메서드와 writeFileSync() 메서드를 사용하는 예제를 보겠다.
[ 코드 ]
//모듈을 추출한다.
var fs = require('fs');

//변수를 선언한다.
var data = "Hello World .. !";

//모듈을 사용한다.
fs.writeFile('TextFileOtherWrite.txt', data, 'utf8', function (error) {
console.log('WRITE FILE ASYNC COMPLETE');
});

fs.writeFileSync('TextFileOtherWriteSync.txt', data, 'utf8');
console.log('WRITE FILE SYNC COMPLETE');


[ 실행 ]


6.3 예외 처리

  • 파일을 읽고 쓰는 일은 굉장히 위험한 일이다. 파일을 읽으려고 하는데 파일이 존재하지 않을 경우 프로그램은 예외가 발생해 곧바로 종료된다.
  • 또한 파일을 쓸 수 없는 위치에 파일을 쓰려고 하면 예외가 발생해 곧바로 프로그램이 종료된다.
  • 따라서 예외 처리를 하여 프로그램이 비정상적으로 종료되지 않도록 한다.
[ 코드 - 동기 처리하는 메서드의 예외 처리 ]
//모듈을 추출한다.
var fs = require('fs');

//파일을 읽는다.
try {
var data = fs.readFileSync('textfile.txt', 'utf8');
console.log(data);
} catch (e) {
console.log(e);
}

//파일을 쓴다.
try {
fs.writeFileSync('textfile.txt', 'Hello World .. !', 'utf8');
console.log('FILE WRITE COMPLETE');
} catch (e) {
console.log(e);
}


[ 실행 - 동기 처리하는 메서드의 예외 처리 ]


[ 코드 - 비동기 처리하는 메서드의 예외 처리 ]

//모듈을 추출한다.

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