Node.js 내장객체
global 객체
- message, __filename, __dirname, console, error 등 전역정보를 담고있는 객체
- 일반적으로 생략해서 쓴다
console.log(__filename); // global.console.log(global.__filename); 와 같다
- 속성, 함수등을 전영역에서 이용할수 있게 해주는 객체이다.
- 되도록이면 속성등은 수정하지 않고 사용하는게 좋을거 같다… 전역메모리 이슈
- 모듈 내부에 선언된 변수는 해당 모듈 내부에서만 사용가능하다.
- 모듈사이에 공유하기 위해서는 해당객체 이용.
global.console / console 객체
- stdout
- 디버깅 콘솔에 데이터를 표시해주는 객체, 함수에 따라 표시해주는 데이터는 다르다.
- log(str) : str(내용)을 콘솔에 표시. placeholders 사용 가능.
- time(label) / timeEnd(label) : label을 공유하는 time ~ timeEnd 사이의 측정된 시간 출력
- error(e) : e(내용)을 에러로 콘솔에(stderr에) 표시
- dir(obj, option) : obj에 전달받은 객체를 option에 전달받은 설정으로 표시
var person = {name:’제이디’, birthday:’1992.06.20’}; console.dir(person); // output : {name:’제이디’, birthday:’1992.06.20’} // option 부분은 생략가능
- trace() : 호출됬을때 까지의 Stack 을 추적
function c() { console.log(‘c’); console.trace(); }
function b() { console.log(‘b’); c(); }
function a() { console.log(‘a’); b(); }
a();
-
Trace at c (repl:3:9) at b (repl:3:1) at a (repl:3:1) at repl:1:1 // <– For now feel free to ignore anything below this point, these are Node’s internals at realRunInThisContextScript (vm.js:22:35) at sigintHandlersWrap (vm.js:98:12) at ContextifyScript.Script.runInThisContext (vm.js:24:12) at REPLServer.defaultEval (repl.js:313:29) at bound (domain.js:280:14) at REPLServer.runBound [as eval] (domain.js:293:12) —
Timer
- setTimeout(callback, ms) : millisecond 후에 callback 실행
- setInterval(callback, ms) : millisecond 을 주기로 callback 실행
- setImmediate(callback) : 즉시 callback 실행
- clear~ : set~ 함수를 취소
const interval = setInterval(() => { console.log(‘call’)}, 1000) // 1000ms(1초) 마다 콘솔에 call 이라는 내용 표시 clearInterval(interval); // interval 이라는 Timer 취소
global.process / process 객체
- 현재 실행되는 노드프로세스의 설치버전, 아키텍쳐정보, 프로세스ID, 프로세스경로등의 정보를 담고있다.
- process.env : 환경변수 정보
- process.argv : 프로세스를 실행할때 전달받은 매계인자 정보
- process.nextTick(callback) : 이벤트루프중 callback을 가장먼저 실행하도록 한다.
- process.exit() : 프로세스 종료
exports / module.exports 객체
- 직접 만든 모듈을 사용하기 위한 전역객체
- 만든 모듈은 require()를 이용하여 불러온다.
- module.exports에 객체를 할당하는 순간 전역변수가 아니게 된다.
- module.exports = obj; // module.exports에 속성 추가 불가
- exports(obj)에 속성을 모두 추가한뒤 최종적으로 module.exports = obj;
// calcmodule.js var obj = {};
obj.sum = function(a, b){ return a + b; }
obj.multiply = function(a, b){ return a * b; }
module.exports = obj;
// calcmodule 사용 var calc = require(‘./calcmodule’); console.log(‘1+1=%d’, calc.sum(1, 1));