본문 바로가기
매일코딩/Node.js

[node.js] 기본 내장모듈

by 인생여희 2017. 3. 8.
반응형

기본내장모듈

 

node.js는 기본적으로 여러 가지 모듈을 제공한다.

꼭 알아둘 개념

개념

설명

node.js문서

node.js의 주요 기능을 설명하는 문서다

url모듈

인터넷 주소를 다루는데 사용

Query String 모듈

url 객체의 쿼리를 다루는 데 사용한다.

util 모듈

node.js의 보조 기능을 모아두었다.

crypto 모듈

해시 생성과 암호와를 수행한다.

File System모듈

파일을 다룬다.



node.js 문서를 보는 곳

https://nodejs.org/dist/latest-v6.x/docs/api/

 

1. os모듈

 

)

// 모듈을 추출합니다.

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()); // cpu의 정보를 담은 객체를 리턴한다.

console.log(os.networkInterfaces());// 네트워크 인터페이스의 정보를 담은 배열리턴

 

2.url 모듈


url 모듈의 메서드

parse(url) - url 문자열을 url 객체로 변환해 리턴한다.

format(urlObj) - url 객체를 url 문자열로 변환해 리턴한다.

resolve(from,to) - 매개변수를 조합해 완전한 url 문자열을 생성해 리턴한다.

 

)

// 모듈을 추출합니다.

var url = require('url');

 

// 모듈을 사용합니다.

/parse() 메서드는 매개변수로 url 문자열을 입력하면 url을 분해해 객체로 만든다.

var parsedObject = url.parse('http://dic.naver.com/search.nhn?dicQuery=%ED%85%8C%EC%8A%A4%ED%8A%B8&query=%ED%85%8C%EC%8A%A4%ED%8A%B8&target=dic&ie=utf8&query_utf=&isOnlyViewEE=');

 

console.log(parsedObject);

 

결과

Url {

protocol: 'http:',

slashes: true,

auth: null,

host: 'www.hanbit.co.kr',

port: null,

hostname: 'www.hanbit.co.kr',

hash: null,

search: '?p_code=%20B4250257160',

query: 'p_code=%20B4250257160',

pathname: '/store/books/look.php',

path: '/store/books/look.php?p_code=%20B4250257160',

href: 'http://www.hanbit.co.kr/store/books/look.php?p_code=%20B4250257160' }

 

3.query string 모듈

url 객체의 쿼리와 관련된 모듈이다.


stringfiy(obj) - 쿼리 객체를 쿼리 문자열로 변환해 리턴한다.

parse(str) - 쿼리 문자열을 쿼리 객체로 변환해 리턴한다.

 

 

)

var url = require('url');

var querystring = require('querystring');

 

// 모듈을 사용합니다.

var parsedObject = url.parse('http://dic.naver.com/search.nhn?dicQuery=%E3%85%87%E3%85%87&x=28&y=20&query=%E3%85%87%E3%85%87&target=dic&ie=utf8&query_utf=&isOnlyViewEE=');

console.log(querystring.parse(parsedObject.query));

 

결과

{ dicQuery: 'ㅇㅇ',

x: '28',

y: '20',

query: 'ㅇㅇ',

target: 'dic',

ie: 'utf8',

query_utf: '',

isOnlyViewEE: '' }

 

참고

parse()메서드의 두 번째 매개변수를 사용하면 위와 같은 효과를 얻을 수 있다.


// 모듈을 추출합니다.

var url = require('url');

 

// 모듈을 사용합니다.

console.log(url.parse('http://dic.naver.com/search.nhn?dicQuery=%E3%85%87%E3%85%87&x=28&y=20&query=%E3%85%87%E3%85%87&target=dic&ie=utf8&query_utf=&isOnlyViewEE=', true));

 

결과

Url {

protocol: 'http:',

slashes: true,

auth: null,

host: 'dic.naver.com',

port: null,

hostname: 'dic.naver.com',

hash: null,

search: '?dicQuery=%E3%85%87%E3%85%87&x=28&y=20&query=%E3%85%87%E3%85%87&target=dic&ie=utf8&query_utf=&isOnlyViewEE=',

query:

{ dicQuery: 'ㅇㅇ',

x: '28',

y: '20',

query: 'ㅇㅇ',

target: 'dic',

ie: 'utf8',

query_utf: '',

isOnlyViewEE: '' },

pathname: '/search.nhn',

path: '/search.nhn?dicQuery=%E3%85%87%E3%85%87&x=28&y=20&query=%E3%85%87%E3%85%87&target=dic&ie=utf8&query_utf=&isOnlyViewEE=',

href: 'http://dic.naver.com/search.nhn?dicQuery=%E3%85%87%E3%85%87&x=28&y=20&query=%E3%85%87%E3%85%87&target=dic&ie=utf8&query_utf=&isOnlyViewEE=' }

 

4.util모듈

util 모듈은 node.js의 보조적인 기능을 모아둔 모듈입니다.


메서드

formate(format) 매개변수로 입력한 문자열을 조합해 리턴한다.

 

)

// 모듈을 추출합니다.

var util = require('util');


// 모듈을 사용합니다.

var data = util.format('%d + %d = %d', 52, 273, 52 + 273);

console.log(data);


5.cryto 모듈


이 모듈은 해시 생성과 암호화를 수행하는 모듈이다.


참고

해시란? 1. 키와 값을 갖는 자료형: 대표적으로 자바스크립트의 객체 해시

 

모듈을 사용한 해시 예)


// 모듈을 추출합니다.

var crypto = require('crypto');

 

// 해시를 생성합니다.

var shasum = crypto.createHash('sha256');

shasum.update('crypto_hash');

var output = shasum.digest('hex');

 

// 출력합니다.

console.log('crypto_hash:', output);



결과

crypto_hash: 820f329baab52f75e1e3844b61b7bfcaa4035d881c6f1fbd42dc29b024638c05



crypto 모듈을 사용한 암호화 예)

//모듈 추출

var crypto = require('crypto');

 

// 변수 선언

var key = '나만의 키`

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);

 

결과

원래문자열: PASSWORD

암호화:JoZdJ26mLbkKOp5H2onYHg==

암호화 해제:PASSWORD

 

6.File System 모듈

모듈의 메서드

readFile(file,encoding,callback); //파일을 비동기적으로 읽는다.

readFileSync(file,encoding); // 파일을 동기적으로 읽는다.

writeFile(file,data,encoding,callback); // 파일을 비동기적으로 쓴다.

writeFileSync(file.data,encoding) //파일을 동기적으로 쓴다.

 

)

// 모듈을 추출합니다.

var fs = require('fs');

 

// 모듈을 사용합니다.

var text = fs.readFileSync('textfile.txt', 'utf8');

console.log(text);

 

//textfile.txt에는 hello my world라는 글자 있음

 

결과

 

hello my world

 

 

readFile )

// 모듈을 추출합니다.

var fs = require('fs');

 

// 모듈을 사용합니다.

fs.readFile('textfile.txt', 'utf8', function (error, data) {

console.log(data);

});


readFile() 메서드는 readFileSync() 메서드를 비동기적으로 구현한 메서드이다. 따라서 readFile() 메서드를 만나는 순간 이벤트 리스너를 등록하고 파일을 모두 읽게 만들어 이벤트 리스너를 실행한다.

콜백 함수의 두 번째 매개변수에 읽은 데이터 전달.

 

 

파일쓰기

 

)

// 모듈을 추출합니다.

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');


결과

WRITE FILE SYNC COMPLETE

WRITE FILE ASYNC COMPLETE

 

순서를 확인해 보시라

 



예외처리

동기 처리를 하는 메서드의 예외처리

읽고쓸 파일이 존재하지 않을 때 예외가 발생할 수 있다.


)

// 모듈을 추출합니다.

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');

}

});

 

 

출력결과

 

FILE WRITE COMPLETE

Hello World .. !

 

 

 

반응형

'매일코딩 > Node.js ' 카테고리의 다른 글

[node.js] express 모듈 1  (4) 2017.03.12
[node.js] 외부모듈  (2) 2017.03.11
[node.js] HTTP  (0) 2017.03.10
[node.js] 이벤트  (2) 2017.03.09
[node.js] 입문  (4) 2017.03.07

댓글