Global Variables (1 / 2)
description
Transcript of Global Variables (1 / 2)
Global Variables (1 / 2)
ㅇ [Debug As] - [Node Application]
ㅇ 코드 실행 시 개발자가 작성한 코드를 function 으로 묶은 후 총 5 개의 파라미터를 넘겨주면서 실행
- exports / require / module node.js 내부 객체를 다루는 객체로 활용- __filename / __dirname 파일 이름 , 프로젝트 경로 등의 자료로 활용
ㅇ 코드 실행 결과
console.log(__filename);console.log(__dirname);
Global Variables (2 / 2)
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 객체를 이용하여 재사용
var cal = require('./cal.js');
console.log(cal.sum(5, 6));
exports.js
exports.sum = function(x, y) {x = parseInt(x);y = parseInt(y);
return x + y;}
cal.js
exports 객체 (2 / 2)
ㅇ Require 를 이용하여 모듈 로딩시 같은 디렉토리에 있을 경우 ‘ ./’ 를 써주고 이외의 경우는 상대 / 절대 경로로 표기ㅇ 경로를 나타내지 않고 require(‘cal.js’) 로 호출시에는 node_modules 디렉토리 생성 후 파일 추가
var cal = require('cal.js');
console.log(cal.sum(5, 6));
exports.js
Events (1 / 5)ㅇ Events 등록
- 자바스크립트에서는 addEventListener 함수를 이용하여 click, mousemove 등 다양한 이벤트를 등록하고 해당 이벤트 핸들러를 구현하여 사용- node.js 에서는 EventEmitter 클래스에 구현된 addListener 와 on 두개의 함수를 이용하여 이벤트를 등록하여 사용
var eventHandler = function() {console.log('EXIT');
};process.addListener('exit', eventHandler);// process.on(‘exit’, eventHandler);
events1.js
Events (2 / 5)ㅇ Events 삭제
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', er-rHandler2);
error
events2.js
Events (3 / 5)ㅇ Events 발생
process.on('test', function() {console.log('Test Event!');
});
process.emit('test');
events3.js
- emit() 메소드를 이용하여 이벤트 강제 발생
Events (4 / 5)ㅇ Events 발생 (1 / 2)
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');
events4.js
Events (5 / 5)ㅇ Events 발생 (2 / 2)
exports.obj = new process.EventEmitter();
exports.obj.sum = function(x, y) {return x + y;
};
eventObj.js
- 새로운 객체에서 이벤트를 사용하기 위해 EventEmiter 상속
os 모듈 (1 / 2)ㅇ 서버의 기본적인 하드웨어 자원들의 정보를 확인
var os = require('os');
console.log(os.platform());
os.js
메소드 설명
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’ 라는 접미사를 붙임
var fs = require('fs');fs.readFile('../README.md', 'utf8', function(err, data) {
if(err) {throw err;
}console.log(data);
});
file1.js
ㅇ 파일 읽기
동기 방식 fs.readFileSync(‘../README.md’, ‘utf8’);
var fs = require('fs');
// asyncfs.exists('../README2.md', function(exists) {
console.log("async : " + exists);});
// syncvar exists = fs.existsSync('../README.md');console.log("sync : " + exists);
file2.js
ㅇ 파일 확인
File System 모듈 (2 / 4)
var fs = require('fs');
// asyncfs.writeFile('../save1.txt', 'Hello Node', 'utf8', function(err) {
if(err) {throw err;
}console.log("async saved");
});
// syncfs.writeFile('../save2.txt', 'Hello Node', 'utf8');
file3.js
ㅇ 파일 쓰기
File System 모듈 (3 / 4)
var fs = require('fs');
// asyncfs.unlink('../save1.txt', function(err) {
if(err) {throw err;
}console.log("delete");
});
// syncfs.unlinkSync('../save2.txt');
file4.js
ㅇ 파일 삭제
File System 모듈 (4 / 4)
url 모듈ㅇ Url String 객체ㅇ 객체화 : url.parse()
ㅇ 직렬화 : url.format()
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));
url.js
util 모듈ㅇ 문자열 재구성 : util.format()
ㅇ 로그 출력 : util.log()
var util = require('util');
var data = util.format('%s, %d, %j', 'foo', 10, {name:'node.js'});
console.log(data);
util1.js
- %s : 스트링 , %d : 숫자 , %j : JSON
var util = require('util');
util.log('LOG TEST');
util2.js
net 모듈 (1 / 4)ㅇ 내부적으로 매우 많이 사용되지만 ,
일반적인 node.js 애플리케이션 개발에서는 거의 사용되지 않음ㅇ express 같은 서버 역할을 해주는 외부 모듈에서 이미 구현되어 있기 때문에 개발자가 직접 net 모듈을 사용하여 개발하지 않음
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.js
net 모듈 (2 / 4)ㅇ putty 접속 (1 / 2)
net 모듈 (3 / 4)ㅇ putty 접속 (2 / 2)
net 모듈 (4 / 4)ㅇ console 로그