기본내장모듈
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 |
댓글