node.js 교과서 학습 : node 내장 객체

minseok·2023년 9월 1일
0

REPL

Read Eval Print Loop를 의미합니다.
입력한 코드를 읽고(Read) 해석(Eval)하고 결과물을 반환(Print)하는 것을 계속 반복(Loop)한다고 해서 REPL이라고 불립니다.

module

특정한 기능을 하는 함수나 변수들의 집합
모듈을 만들어두면 여러 프로그램에서 해당 모듈을 재사용할 수 있다.
보통 파일 하나가 모듈 하나가 된다.

NodeJS에서 채택한 CommonJS방식 ( require, exports )이 있고
ES6에 도입된 ( import, export )가 존재한다.

성능으로는 ES6 방식이 필요한 모듈 부분만 선택해 로드할 수 있고 CommonJS보다 성능적으로 좋다고 한다.

노드 내장 객체

노드는 내장 객체와 내장 모듈을 제공하여 따로 설치하지 않아도 바로 사용할 수 있음

global
console(), require() 함수도 global의 멤버, 생략해서 사용할 수 있음
결국 전역객체이며 응용하려면 사이드 이펙트, 의존성의 흐름을 주의하자.

$ node
> global
로 값(global객체)을 확인할 수 있다.

console
브라우저에서는 window객체이며 node.js에서는 global에 포함

const obj = {
    outside: {
        inside: {
            key: 'value'
        }
    }
};

// 시작 시간
console.time('전체 시간');

// 객체를 표기할 때 여러가지 옵션을 주는 듯
console.dir(obj, { colors: false, depth: 0});

// stackTrace를 노출시킨다.
console.trace('에러 위치 추적');

// 종료 시간, 단순히 ms를 문자열로 보여주는 것 같다.
// 실제로 사용하기에는 아쉽다.
console.timeEnd('전체 시간');

timer

setTimeout(callback, ms) : 주어진 시간 이후에 콜백 호출
setInterval(callback, ms) : 주어진 시간마다 콜백 호출
setImmediate(callback): 콜백을 즉시 호출

3개 함수 모두 동기 코드가 실행되고 호출된다.

그리고 위 함수들은 모두 식별할 수 있는 값을 반환하며
clear**(Id)를 사용하여 기능을 중지할 수 있음

filename, dirname
현재 파일의 경로, 파일명 정보 제공

modules, exports
module 객체 말고 exports 객체로도 모듈을 만든다.

exports.obj = 1;

사실 module.exports와 exports는 같은 객체를 참조한다.
결국 exports의 멤버로 넣으면 module을 통해서도 접근할 수 있다.

// true
console.log(exports === module.exports);

exports는 객체만 참조할 수 있다.

process
process 객체는 현재 node process의 정보를 포함합니다.
(pid, os, path...)

process.env
시스템의 환경변수를 출력합니다.
중요한 값(패스워드..)같은 것을 직접 입력하는 것은 위험합니다.
process.env의 속성으로 추가합니다.

process.nextTick
microTaskQueue에 포함되어 libuv의 phase의 작업들 보다 작업 우선권을 가집니다.(Promise의 resolve도 포함)

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

process.exit
실행 중인 노드 프로세스를 종료

profile
즐겁게 개발하기

0개의 댓글