[Node.js 훑어보기] #2 내장객체

mechaniccoder·2020년 7월 23일
0

Node.js 알아가기

목록 보기
2/7
post-thumbnail

module, exports


노드에서 모듈을 만드는 방법은 두 가지입니다.

  • module.exports
  • exports 객체

module.exports

add.js

function add(x, y) {
	return x + y;
}

module.exports = add
// 아래처럼 할 수도 있습니다.
module.exports = { 
	add
}

module.exports = add를 로드할 때는 {}가 필요없지만 module.exports = { add }를 로드할 때는 {}를 써줘야합니다.

const add = require('./add.js');

const { add } = require('./add.js');

exports

아래와 같이 모듈을 만들 수도 있습니다.

exports.add = function(x, y) {
	return x + y;
}

exportsmodule.exports는 같은 객체를 가르키는 참조값을 갖습니다.

process


process는 현재 실행되고 있는 노드 프로세스에 대한 정보를 받습니다. 다양한 속성들이 있지만 중요하다고 생각하는 것만 정리해보겠습니다.

process.env

이 속성은 환경 변수에 대한 정보를 가집니다. 프로젝트에서 중요한 환경변수나 API 키를 저장하는 공간으로 사용합니다. (절대로 github같은 플랫폼에 업로드 하면 안됩니다. 해킹당하면 유출되기 때문이죠.)

const secretId = process.env.SECRET_ID;
const secretPW = process.env.SECRET_PW;

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

다른 콜백 함수들보다 우선적으로 처리할 수 있는 이유는 콜백 함수가 모이는 태스크 큐가 아닌 마이크로 태스크 큐를 우선적으로 처리하기 때문입니다. 이 마이크로 태스크 큐에는 nextTick 뿐만이 아니라 resolvePromise있습니다.

References


  • 조현영『Node.js 교과서』, (주)도서출판 길벗(2019년 2월 2일), p.63 ~ 70
profile
세계 최고 수준을 향해 달려가는 개발자입니다.

0개의 댓글