본문 바로가기
전공수업/웹서버프로그래밍(Node.js)

[Node.js] 내장 객체

by JooRi 2024. 4. 21.
728x90
반응형
SMALL

* 내장 객체

노드에선 기본적인 내장 객체와 내장 모듈을 제공한다.

내장 모듈은 다음 글에서 다루겠다.

 

1. global

노드의 전역 객체로, 모든 파일에서 접근 가능하다.

 

2. console

console.log()처럼 로그를 콘솔에 출력하는 데 사용된다.

 

console.time() / console.timeEnd()

time과 timeEnd 사이의 시간 측정

 

console.log()

로그를 콘솔에 표시 

 

console.error()

에러를 콘솔에 표시

 

console. dir(객체, 옵션)

객체를 콘솔에 표시

 

console. trace()

에러 추적

 

// 각종 자료형 변수 선언
const string = 'abc';  // 문자열
const number = 1;  // 숫자
const boolean = true;  // 불린
const obj = {  // 객체
    outside: {  // 외부 객체
        inside: {  // 내부 객체
            key: 'value',  // 키와 값
        },
    },
};

// 전체 실행 시간 측정 타이머
console.time('전체시간');

// 일반 로그 출력
console.log('평범한 로그입니다 쉼표로 구분해 여러 값을 찍을 수 있습니다.');
console.log(string, number, boolean);  
console.error('에러 메시지는 console.error에 담아주세요');

// console.dir: 객체 출력
// color: 텍스트 색상 출력 여부, depth: 객체 깊이 설정
console.dir(obj, {color: false, depth: 2});  // 텍스트 색상 적용x, 2번째 내부객체까지 출력
console.dir(obj, {color: true, depth: 1});  // 텍스트 색상 적용, 1단계 외부객체만 출력

// 타이머 시작
console.time('시간측정');
for(let i = 0; i<100000; i++){} // 시간이 오래 걸리는 반복문 설정
console.timeEnd('시간측정');  // 타이머 종료, console.time('시간측정');에 쓰인 레이블과 같아야 함

// console.trace: 에러 추적
function b(){
    console.trace('에러 위치 추적');
}
function a(){  // 함수 b를 출력하는 함수 a
    b();
}
a();  // '에러 위치 추적'이 출력됨

console.timeEnd('전체시간');  // 전체 실행 시간 타이머 종료

 

3. 타이머 메서드

set과 clear 메서드는 대응관계이다.(실행과 취소 관계)

 

setTimeout(콜백함수, 밀리초) / clearTimeout()

밀리초(1000분의 1초) 후에 실행

 

setInterval(콜백함수, 밀리초) / clearInterval()

밀리초마다 반복 실행

 

setImmediate(콜백함수) / clearImmediate()

즉시 실행

 

// 1.5초 후에 실행될 콜백 함수를 setTimeout을 통해 등록
const timeout = setTimeout(() => {
    console.log('1.5초 후 실행');
}, 1500);

// 1초마다 실행될 콜백 함수를 setInterval을 통해 등록
const interval = setInterval(() => {
    console.log('1초마다 실행');
}, 1000);

// 3초 후에 실행되지 않을 콜백 함수를 setTimeout을 통해 등록
const timeout2 = setTimeout(() => {
    console.log('실행되지 않습니다');
}, 3000);

// 2.5초 후에 실행될 콜백 함수를 setTimeout을 통해 등록,
// clearTimeout과 clearInterval로 timeout2와 interval 취소
setTimeout(() => {
    clearTimeout(timeout2);
    clearInterval(interval);
}, 2500);

// 즉시 실행될 콜백 함수를 setImmediate를 통해 등록
const immediate = setImmediate(() => {
    console.log('즉시 실행');
});

// 실행되지 않을 콜백 함수를 setImmediate를 통해 등록
const immediate2 = setImmediate(() => {
    console.log('실행되지 않습니다');
});

// 즉시 실행되지 않을 immediate2 취소
clearImmediate(immediate2);

// 출력
즉시 실행
1초마다 실행
1.5 실행
1초마다 실행

 

4. 내장 변수

__filename은 현재 파일 경로, __dirname: 현재 폴더(디렉터리) 경로를 가지고 있다.

 

console.log(__filename);  // 현재 파일 경로 출력
console.log(__dirname);  // 현재 폴더 경로 출력

// 출력
C:\Users\djjin\Desktop\web_server_programming\5주차\filename.js
C:\Users\djjin\Desktop\web_server_programming\5주차

 

5. process

현재 실행 중인 노드 프로세스에 대한 정보를 담고 있다.

 

 

6. process.nextTick(콜백함수)

이벤트 루프는 다른 콜백함수들보다 nextTick의 콜백함수를 우선 처리한다.

너무 남용하면 다른 콜백함수들 실행이 늦어질 수 있다.

 

setImmediate(() => {  // 마지막에 출력됨, 우선순위 구조에 따른 것
    console.log('immediate');
});
process.nextTick(() => {  // 기장 먼저 실행됨
    console.log('nextTick');
});
setTimeout(() => {  // 3번쨰로 실행됨
    console.log('timeout');
}, 0);
Promise.resolve().then(() => console.log('promise'));  // 프로미스: 즉시 실행, 2번째로 실행됨

// 출력
nextTick
promise
timeout
immediate

 

7. process.exit()

현재 프로세스를 멈춘다.

코드가 없거나 0이면 정상종료, 이외의 코드는 비정상 종료

728x90
반응형
LIST