Node.js 이해하기_노드 내장 객체 알아보기

이애옹·2022년 12월 27일
0

Node.js

목록 보기
8/32

📝 global

  • 브라우저의 window와 같은 전역 객체

  • 전역객체이므로 모든 파일에서 접근 가능

  • 생략 가능 (global.require -> require, global.console -> console)

  • 전역객체이므로 간단한 데이터를 파일끼리 공유할 때 사용하기도함


global 객체 테스트를 위해 두개의 파일을 생성해주었다.

- globalA.js

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

- globalB.js

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

global.message = '안녕하세요';
console.log(A());
  • 실행결과

    안녕하세요

  • globalA 모듈의 함수는 global.message 값을 반환하고,
    globalB.js 에서는 global 객체에 속성명이 message인 값을 대입하고 globalA 모듈의 함수 호출


📝 console

  • console.time(레이블) : time과 timeEnd 사이의 시간 측정

  • console.log(내용) : 로그 출력

  • console.error(에러 내용) : 에러 출력

  • console.dir(객체, 옵션) : 객체를 콘솔에 표시

  • console.trace(레이블) : 에러가 어디서 발생했는지 추적

타이머

  • setTimeout(콜백 함수, 밀리초) : 주어진 밀리초 이후에 콜백함수 실행

  • setInterval(콜백 함수, 밀리초) : 주어진 밀리초마다 콜백함수 반복

  • setImmdiate(콜백 함수) : 콜백 함수를 즉시 실행

  • clear+Timeout/Interval/Immdiate : 타이머 취소

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);
  • immediate 실행 -> immediate2는 바로 삭제되었으므로 실행x -> 소스 실행 1초후에 interval의 콜백 실행 -> 1.5초 후에 timeout 콜백 실행 -> 2초후에 interval 콜백 두번째 실행 -> 2.5초 후에 timeout2와 interval 취소

📝 filename, dirname

  • filename : 현재 파일명

  • dirname : 파일 경로

📝 process

  • process.version : 현재 설체된 노드의 버전

  • process.arch : 프로세서 아키텍처 정보

  • process.platform : 운영체제 플랫폼 정보

  • process.pid : 현재 프로세스 아이디

  • process.uptime() : 프로세스가 시작된 후 흐른 시간(초 단위)

  • process.cwd() : 현재 프로세스가 실행되는 위치

  • process.cpuUsage() : 현재 cpu 사용량

- process.env

시스템의 환경 변수를 출력하며,
서비스의 중요한 키를 저장하는 공간으로 사용된다.

const secretId = process.env.SECRET_ID;
const secretCode = process.env.SECRET_CODE;

-> 비밀번호와 각종 API 코드를 다음과 같이 process.env 속성으로 대체하고, 값을 직접 넣어준다..

- process.nextTick(콜백)

이벤트 루프가 다른 콜백 함수들보다 nextTick의 콜백 함수를
우선적으로 처리하도록 만들어준다.

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

    nextTick
    promise
    timeout
    immediate

  • process.nextTick은 setImmediate나 setTimeout 보다 먼저 실행된다.

  • resolve된 Promise도 다른 콜백들보다 우선시되어 실행된다.

- process.exit(코드)

실행 중인 노드 프로세스를 종료한다. 서버에 사용하면 서버가 멈추므로, 서버에서는 거의 사용하지 않는다. (서버 외의 독립적인 프로그램에서 수동으로 노드를 멈추기 위해 사용)

let i=1;

setInterval(() => {
    if (i===5){
        console.log('종료!');
        process.exit();
    }
    console.log(i);
    i += 1;
},1000);
  • 실행결과

    1
    2
    3
    4
    종료!

  • i가 5가 되었을때 종료되는 코드

  • 인자를 주지 않거나 0이면 정상종료, 1을 주면 비정상 종료
    (만약 에러가 발생해서 종료하는 경우, 1을 넣어주면 됨)

profile
안녕하세요

0개의 댓글