[Node.js] 3. 노드 내장 객체

[Node.js] 3. 노드 내장 객체

노드에서는 기본적인 내장 객체와 내장 모듈을 제공합니다. 이는 window 객체와 비슷하다고 할 수 있습니다.

1. global

전역 객체로, 모든 파일에서 접근할 수 있습니다. global을 생략해도 됩니다.

"2. 모듈"에 나왔던 require도 global.require입니다.

PS C:\Users\user\Desktop\Node.js> node Welcome to Node.js v14.16.0. Type ".help" for more information. > global Object [global] { global: [Circular *1], clearInterval: [Function: clearInterval], clearTimeout: [Function: clearTimeout], setInterval: [Function: setInterval], setTimeout: [Function: setTimeout] { [Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)] }, queueMicrotask: [Function: queueMicrotask], clearImmediate: [Function: clearImmediate], setImmediate: [Function: setImmediate] { [Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)] } }

2. console

대표적으로 console.log()가 있습니다. print()와 비슷합니다.

console.log 평범한 로그를 콘솔에 표시합니다. console.time(레이블) console.timeEnd와 대응되어 같은 레이블을 가진 time과 timeEnd 사이의 시간을 특정합니다.

console.time("시간1"); console.timeEnd("시간1");

PS C:\Users\user\Desktop\Node.js> node console 시간1: 0.09ms

3. timer

타이머 기능을 제공하는 함수들이 있습니다.

setTimeout(콜백 함수, 밀리초) 밀리초 이후에 콜백 함수를 실행합니다. setInterval(콜백 함수, 밀리초) 밀리초마다 콜백 함수를 실행합니다. setImmediate(콜백 함수) 콜백 함수를 즉시 실행합니다. clearTimeout(아이디) setTimeout을 취소합니다. clearInterval(아이디) setInterval을 취소합니다. clearImmediate(아이디) 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); const immediate = setImmediate(()=>{ console.log('즉시 실행'); }); const immediate2 = setImmediate(()=>{ console.log('실행되지 않습니다'); }); clearImmediate(immediate2);

PS C:\Users\user\Desktop\Node.js> node timer 즉시 실행 1초마다 실행 1.5초 후에 실행 1초마다 실행

4. __filename, __dirname

현재 파일의 파일명과 경로를 제공합니다.

이때, 윈도우는 "\"로, 그 외는 "/"로 경로 구분을 합니다.

5. module, exports, require

exports

앞에서는 모듈을 만들 때 module.exports를 사용했으나, exports 객체를 사용해도 됩니다.

exports.odd = "홀수입니다"; exports.even = "짝수입니다";

module.exportㄴ와 exports는 같은 객체를 참조하기 때문입니다. 그러나 참조관계가 존재하기 때문에 동시에 사용하는 것을 권장하지는 않는다고 합니다.

require

require은 함수이고, 함수는 객체입니다. 그래서 require도 객체로서의 속성을 가지고 있습니다.

module.exports = "메시지"; require('./var'); console.log(require.cache); console.log("--------------------------"); console.log(require.main.filename);

require.js는 var.js를 참조하고 있습니다.

PS C:\Users\user\Desktop\Node.js\module> node require [Object: null prototype] { 'C:\\Users\\user\\Desktop\\Node.js\\module\\require.js': Module { id: '.', path: 'C:\\Users\\user\\Desktop\\Node.js\\module', exports: '메시지', parent: null, filename: 'C:\\Users\\user\\Desktop\\Node.js\\module\\require.js', loaded: false, children: [ [Module] ], paths: [ 'C:\\Users\\user\\Desktop\\Node.js\\module\

ode_modules', 'C:\\Users\\user\\Desktop\\Node.js\

ode_modules', 'C:\\Users\\user\\Desktop\

ode_modules', 'C:\\Users\\user\

ode_modules', 'C:\\Users\

ode_modules', 'C:\

ode_modules' ] }, 'C:\\Users\\user\\Desktop\\Node.js\\module\\var.js': Module { id: 'C:\\Users\\user\\Desktop\\Node.js\\module\\var.js', path: 'C:\\Users\\user\\Desktop\\Node.js\\module', exports: { odd: '홀수입니다', even: '짝수입니다' }, parent: Module { id: '.', path: 'C:\\Users\\user\\Desktop\\Node.js\\module', exports: '메시지', parent: null, filename: 'C:\\Users\\user\\Desktop\\Node.js\\module\\require.js', loaded: false, children: [Array], paths: [Array] }, filename: 'C:\\Users\\user\\Desktop\\Node.js\\module\\var.js', loaded: true, children: [], paths: [ 'C:\\Users\\user\\Desktop\\Node.js\\module\

ode_modules', 'C:\\Users\\user\\Desktop\\Node.js\

ode_modules', 'C:\\Users\\user\\Desktop\

ode_modules', 'C:\\Users\\user\

ode_modules', 'C:\\Users\

ode_modules', 'C:\

ode_modules' ] } } -------------------------- C:\Users\user\Desktop\Node.js\module\require.js

require.cache require.cache에는 자기 파일과 참조한 파일들이 속성명으로 들어가 있습니다.

한 번 require한 파일은, require.cache에 저장되는 것입니다. 따라서 새로 require하고 싶다면, 속성을 제거하면 됩니다. require.main 노드 실행 시 첫 모듈을 가리킵니다.

6. process

process 객체는 현재 실행되고 있는 노드 프로세스에 대한 정보를 담고 있습니다.

노드의 버전, 아키텍쳐, 운영체제, process id 등의 정보를 알 수 있습니다.

시스템 환경변수 이외에도 임의로 환경 변수를 저장할 수 있습니다.

process.nextTick(콜백 함수)

setImmediate(()=>{ console.log('immediate'); }); process.nextTick(()=>{ console.log('nextTick'); }); setTimeout(()=>{ console.log('timeout'); },0); Promise.resolve().then(()=>console.log('promise'));

PS C:\Users\user\Desktop\Node.js> node nextTick nextTick promise timeout immediate

process.nextTick와 promise는 setTimeout과 setImmediate보다 먼저 실행됩니다. 우선시되기 때문에, 2개는 마이크로 태스크(microtask)라고 부르기도 합니다.

process.exit

실행 중인 노드 프로세스를 종료합니다.

from http://minheekim0906.tistory.com/4 by ccl(A) rewrite - 2021-08-16 01:26:34