바르고 뜨겁게

[NodeJS] 내장객체 - global, __filename, __dirname, process, console, 타이머 본문

자바스크립트/Node Js

[NodeJS] 내장객체 - global, __filename, __dirname, process, console, 타이머

RightHot 2018. 12. 14. 01:06

global 내장객체

기존 환경에는 window라는 전역객체가 있어서 window.setTimeout등을 사용가능했음.

노드에는 window 대신 global이 존재.

global 객체는 전체 공유가 됨.

// globalA.js

module.exports = () => global.message;

// globalB.js

const A = require('./globalA');

global.message = '안녕하세요';
console.log(A());

안녕하세요

__filename, __dirname, process

console.log('파일 경로: ',__filename);
console.log('파일이 위치한 경로: ',__dirname);

// process 객체에는 현재 실행중인 노트 프로그램 정보가 들어있다.
console.log('설치된 노드버전: ',process.version);
console.log('실행 아키텍쳐(x64,x86): ',process.arch);
console.log('실행 OS: ',process.platform);
console.log('프로세스 ID (id로 종료가능): ',process.pid);
console.log('노드의 실행시간: ',process.uptime());
console.log('노드의 실행위치: ',process.cwd());
console.log('노드가 설치된 경로: ',process.exePath);
console.log('CPU 사용량: ',process.cpuUsage());
// process.exit() 프로그램 종료

파일 경로:  D:\포트폴리오\_Study\Inflearn_nodeJS-Textbook\globalM.js
파일이 위치한 경로: D:\포트폴리오\_Study\Inflearn_nodeJS-Textbook
설치된 노드버전: v8.9.3
실행 아키텍쳐(x64,x86): x64
실행 OS: win32
프로세스 ID (id로 종료가능): 53908
노드의 실행시간: 0.162
노드의 실행위치: D:\포트폴리오\_Study\Inflearn_nodeJS-Textbook
노드가 설치된 경로: undefined
CPU 사용량: { user: 31000, system: 140000 }

console 내장 객체

// console.js

const string = 'abc';
const number = 1;
const boolean = true;
const obj = {
   outside:{
       key:' 뎁스1 ',
       inside: {
           key:' 뎁스2 '
      }
  }
};

// time과 timeEnd 의 인자값이 같아야됨
console.time('전체 시간');

console.log('일반 로그--------');
console.log(string, number, boolean);
console.error('에러메시지');

// 객체 전용 로그 (컬러 true 하면 알록달록 , depth 조정가능)
console.dir(obj, {colors: false, depth: 2});
console.dir(obj, { colors: true, depth: 1});

console.time('시간 측정');
for(let i=0; i < 100000; i++){
   continue;
}
console.timeEnd('시간 측정');


function b(){
   console.trace('에러 위치 추적(어떤함수를 거쳐서 호출되는지 확인)');
}

function a(){
   b();
}
a();


console.timeEnd('전체 시간');
PS D:\포트폴리오\_Study\Inflearn_nodeJS-Textbook> node console
일반 로그--------
abc 1 true
에러메시지
{ outside: { key: ' 뎁스1 ', inside: { key: ' 뎁스2 ' } } }
{ outside: { key: ' 뎁스1 ', inside: [Object] } }
시간 측정: 2.965ms
Trace: 에러 위치 추적
  at b (D:\포트폴리오\_Study\Inflearn_nodeJS-Textbook\console.js:32:13)
  at a (D:\포트폴리오\_Study\Inflearn_nodeJS-Textbook\console.js:36:5)
  at Object.<anonymous> (D:\포트폴리오\_Study\Inflearn_nodeJS-Textbook\console.js:38:1)
  at Module._compile (module.js:635:30)
  at Object.Module._extensions..js (module.js:646:10)
  at Module.load (module.js:554:32)
  at tryModuleLoad (module.js:497:12)
  at Function.Module._load (module.js:489:3)
  at Function.Module.runMain (module.js:676:10)
  at startup (bootstrap_node.js:187:16)
전체 시간: 7.808ms

타이머 내장객체 (setTimeout, setInterval, setImmediate)

const timeout = setTimeout(() => {
   console.log('1.5초 후 실행')
}, 1500);

const interval = setInterval(() => {
   console.log('1초마다 실행');
}, 1000);

const timeout2 = setTimeout(() => {
   console.log('실행되지 않습니다')
}, 3000);

setTimeout(()=>{
   clearTimeout(timeout2);
   clearInterval(interval);
}, 2500)

// clearTimeout(timeout);
// clearInterval(interval);


// 바로 이벤트루프로 보내고싶을땐 `Immediate` 사용
const im = setImmediate(() => console.log('즉시 실행 setImmediate'));
//clearImmediate(im);
즉시 실행 setImmediate
1초마다 실행
1.5초 후 실행
1초마다 실행



Comments