[3]node.js 중요 내장모듈

Download Report

Transcript [3]node.js 중요 내장모듈

Global Variables (1 / 2)
ㅇ [Debug As] - [Node Application]
ㅇ 코드 실행 시
개발자가 작성한 코드를 function으로 묶은 후 총 5개의 파라미터를 넘겨주면서 실행
- exports / require / module  node.js 내부 객체를 다루는 객체로 활용
- __filename / __dirname  파일 이름, 프로젝트 경로 등의 자료로 활용
Global Variables (2 / 2)
ㅇ 코드 실행 결과
console.log(__filename);
console.log(__dirname);
process 객체 (1 / 2)
ㅇ node.js 에서만 지원되는 객체로써 여러가지 기본 정보를 가지고 있고
기본 기능들을 제공
console.log(process);
process 객체 (2 / 2)
ㅇ 메소드 및 속성
console.log(process.execPath);
console.log(process.cwd());
console.log(process.version);
console.log(process.memoryUsage());
console.log(process.env);
exports 객체 (1 / 2)
ㅇ 모듈 로딩 시스템
ㅇ 개발자가 직접 객체를 구현하고 exports 객체를 이용하여 재사용
exports.js
var cal = require('./cal.js');
console.log(cal.sum(5, 6));
cal.js
exports.sum = function(x, y) {
x = parseInt(x);
y = parseInt(y);
}
return x + y;
exports 객체 (2 / 2)
ㅇ Require를 이용하여 모듈 로딩시 같은 디렉토리에 있을 경우 ‘./’를 써주고
이외의 경우는 상대 / 절대 경로로 표기
ㅇ 경로를 나타내지 않고 require(‘cal.js’)로 호출시에는 node_modules 디렉토리 생성 후
파일 추가
exports.js
var cal = require('cal.js');
console.log(cal.sum(5, 6));
Events (1 / 5)
ㅇ Events 등록
- 자바스크립트에서는 addEventListener 함수를 이용하여 click, mousemove 등
다양한 이벤트를 등록하고 해당 이벤트 핸들러를 구현하여 사용
- node.js 에서는 EventEmitter 클래스에 구현된 addListener와 on 두개의 함수를 이용하여
이벤트를 등록하여 사용
events1.js
var eventHandler = function() {
console.log('EXIT');
};
process.addListener('exit', eventHandler);
// process.on(‘exit’, eventHandler);
Events (2 / 5)
ㅇ Events 삭제
events2.js
process.on('exit', function(e) {
console.log('EXIT');
});
var errHandler1 = function(e) {
console.log('err1', e);
};
var errHandler2 = function(e) {
console.log('err2', e);
};
process.on('uncaughtException', errHandler1);
process.on('uncaughtException', errHandler2);
process.removeListener('uncaughtException', errHandler2);
error
Events (3 / 5)
ㅇ Events 발생
events3.js
process.on('test', function() {
console.log('Test Event!');
});
process.emit('test');
- emit() 메소드를 이용하여 이벤트 강제 발생
Events (4 / 5)
ㅇ Events 발생 (1 / 2)
events4.js
var eObj = require('eventObj.js');
eObj.obj.on('test', function() {
console.log('test event');
});
console.log(eObj.obj.sum(5, 6));
eObj.obj.emit('test');
Events (5 / 5)
ㅇ Events 발생 (2 / 2)
eventObj.js
exports.obj = new process.EventEmitter();
exports.obj.sum = function(x, y) {
return x + y;
};
- 새로운 객체에서 이벤트를 사용하기 위해 EventEmiter 상속
os 모듈 (1 / 2)
ㅇ 서버의 기본적인 하드웨어 자원들의 정보를 확인
os.js
var os = require('os');
console.log(os.platform());
메소드
설명
os.tempdir()
서버의 temp 디렉토리 반환
os.endianness()
엔디언 타입 반환 ‘BE’ or ‘LE’
os.hostname()
서버의 호스트 이름 반환
os.type()
서버의 OS 타입 반환
os.platform()
서버의 플랫폼 반환
os.arch()
서버의 CPU 아키텍처 반환
os.release()
운영체제 OS 버전 반환
os 모듈 (2 / 2)
메소드
설명
os.uptime()
운영체제 시작된 시간 반환
os.loadavg()
Load average에 담긴 정보 반환
os.totalmem()
시스템 메모리 반환
os.freemem()
사용 가능 메모리 반환
os.cpus()
CPU 정보 반환
os.networkInterfaces()
네트워크 정보 반환
File System 모듈 (1 / 4)
ㅇ 파일 핸들링 관련 메소드 제공
ㅇ 동기 / 비동기 두가지 방식으로 제공
ㅇ 동기 방식의 경우, 비동기 방식 메소드에 ‘~Sync’라는 접미사를 붙임
ㅇ 파일 읽기
file1.js
var fs = require('fs');
fs.readFile('../README.md', 'utf8', function(err, data) {
if(err) {
throw err;
}
console.log(data);
});
동기 방식  fs.readFileSync(‘../README.md’, ‘utf8’);
File System 모듈 (2 / 4)
ㅇ 파일 확인
file2.js
var fs = require('fs');
// async
fs.exists('../README2.md', function(exists) {
console.log("async : " + exists);
});
// sync
var exists = fs.existsSync('../README.md');
console.log("sync : " + exists);
File System 모듈 (3 / 4)
ㅇ 파일 쓰기
file3.js
var fs = require('fs');
// async
fs.writeFile('../save1.txt', 'Hello Node', 'utf8', function(err) {
if(err) {
throw err;
}
console.log("async saved");
});
// sync
fs.writeFile('../save2.txt', 'Hello Node', 'utf8');
File System 모듈 (4 / 4)
ㅇ 파일 삭제
file4.js
var fs = require('fs');
// async
fs.unlink('../save1.txt', function(err) {
if(err) {
throw err;
}
console.log("delete");
});
// sync
fs.unlinkSync('../save2.txt');
url 모듈
ㅇ Url String  객체
ㅇ 객체화 : url.parse()
ㅇ 직렬화 : url.format()
url.js
var url = require('url');
var obj = url.parse('https://www.google.co.kr/webhp?' +
'sourceid=chrome-instant&ion=1&' +
'espv=2&ie=UTF-8#newwindow=1&q=node.js');
console.log('url to Object : ', obj);
console.log('=============================');
console.log('Object to url : ', url.format(obj));
util 모듈
ㅇ 문자열 재구성 : util.format()
ㅇ 로그 출력 : util.log()
util1.js
var util = require('util');
var data = util.format('%s, %d, %j', 'foo', 10, {name:'node.js'});
console.log(data);
- %s : 스트링, %d : 숫자, %j : JSON
util2.js
var util = require('util');
util.log('LOG TEST');
net 모듈 (1 / 4)
ㅇ 내부적으로 매우 많이 사용되지만,
일반적인 node.js 애플리케이션 개발에서는 거의 사용되지 않음
ㅇ express 같은 서버 역할을 해주는 외부 모듈에서 이미 구현되어 있기 때문에
개발자가 직접 net 모듈을 사용하여 개발하지 않음
net.js
var net = require('net');
var server = net.createServer(function(c) {
console.log('server connected');
c.on('end', function() {
console.log('server disconnected');
});
c.write('hello\r\nThis is Telnet Service\r\n');
c.pipe(c);
});
server.listen(8124, function() {
console.log('server bound');
});
net 모듈 (2 / 4)
ㅇ putty 접속 (1 / 2)
net 모듈 (3 / 4)
ㅇ putty 접속 (2 / 2)
net 모듈 (4 / 4)
ㅇ console 로그