노드 학습 4일차
안녕하세요 🐸 !
노드에서 기본 제공하는 내장 객체에 대해 알아보겠습니다.
global
가장 먼저 알아볼 내장 객체는 global
입니다.
브라우저의 window
역할을 해주는 노드의 기본 전역 객체 입니다. 브라우저에서는 window
를 사용하는데 노드에서는 global
을 사용하다보니 혼선이 생길 수 있어 globalThis
라는 이름으로 사용합니다. 단, 익스플로러에서는 사용되지 않습니다.
자바스크립트를 작성할 때 window
의 요소를 사용하기 위해 window
를 명시하지 않았던 것과 동일하게 global
도 동일하게 생략하여 사용할 수 있습니다.
global
은 전역 객체로 사용되기 때문에 global
에 속성 값을 저장해 놓으면 다른 파일에서도 사용할 수 있습니다.
브라우저의 globalThis
와 노드의 globalThis
브라우저의 globalThis
와 노드의 globalThis
를 비교해보면 다음의 사진과 같습니다.
개발자 도구에서의 globalThis
브라우저에서의 globalThis
는 브라우저를 조작할 수 있는 document
속성 등이 포함된 것을 확인할 수 있습니다.
노드의 globalThis
노드에서는 브라우저를 조작하지 않기 때문에 브라우저와 관련된 요소가 없는 것을 확인할 수 있습니다.
console
global
의 주요 내장 객체 중 하나인 console
입니다.
저처럼 자바스크립트를 깊게 공부해본적이 없다면 console.log()
만 주구장창 사용 하는 경우가 많을텐데요, console에는 꽤 다양한 함수가 있습니다.
- console.time(), console.timeEnd() : 시간 로깅
- console.error() : 에러 로깅
- console.log() : 평범한 로깅
- console.dir() : 객체 로깅
- console.trace() : 호출 스택 로깅
- console.table() : 객체 혹은 배열을 테이블 형식으로 로깅
이렇게 다양하니 상황에 알맞게 사용하는 것이 개발에 보다 효율적이겠습니다.
타이머 메서드
자바스크립트에서도 동일하게 사용하는 타이머 메서드 입니다. global
의 메서드 중 하나죠
알고 있었더라도 상기시키기 위해 한번 더 정리해봅니다.
- setTimeout(콜백 함수, 밀리초) : 밀리초 후에 콜백 함수 실행
- setInterval(콜백 함수, 밀리초) : 밀리초마다 콜백 함수 실행
setImmediate(콜백 함수) : 콜백 함수 즉시 실행
- clearTimeout(아이디) : setTimeout 을 종료
- clearInterval(아이디) : setInterval 을 종료
- clearImmediate(아이디) : setImmediate 를 종료
여기서 주의 깊게 볼 부분은 setImmediate() 입니다. 기능적으로 본다면 setTimeout(콜백 함수,0) 과 동일한 기능을 한다 볼 수 있습니다.
하지만 이 둘은 실행 시점에 있어 차이가 있기 때문에 엄격히 구분한다면 서로 다른 기능이라 볼 수 있습니다.
setImmediate()는 이름 처럼 바로 수행해달라는 요청이기 때문에 굳이 필요성을 못느낄 수 있지만 setImeediate()를 통해 수행되는 콜백 함수는 이벤트 루프 때 알아봤듯이 비동기로 처리를 할 수 있습니다.
물론 저도 이론만 경험해봤지 실무로는 경험 못해봤습니다🤣
process
다음으로 알아볼 내장 객체는 process
입니다.
실행중인 컴퓨터의 노드 프로세스 정보를 확인할 수 있습니다.
- process.pid : 프로세스의 ID를 확인 할 수 있습니다. 프로세스 강제 종료 등에 주로 사용 됩니다.
- process.arch : 운영체제 정보를 확인 할 수 있습니다.
- process.version : 노드의 버전 입니다.
- process.flatform : 운영체제 플랫폼 입니다. linux, win32 등의 값일 수 있습니다.
- process.uptime() : 프로세스가 실행 된 후에 흐른 시간 입니다. 프로세스 시작 후 N분 후에 특정 작업을 수행하는 등의 요소에 사용할 수 있습니다
- process.cwd() : 현재 프로세스가 실행된 경로입니다.
- process.cpuUseage() : 현재 CPU 사용량 입니다.
process.env
process
객체에서 주로 사용되는 기능 입니다. 시스템 환경 변수를 갖는 객체 입니다.
여기에 비밀 키 등을 보관하는 용도로 사용할 수 있습니다. 만약 이렇게 사용한다면 소스 코드가 유출 되었더라도 비밀키와 같은 중요한 정보는 유출 되지 않기 때문에 보안적인 측면에서 보다 안전합니다.
일부 환경 변수는 노드의 실행 환경에도 영향을 끼칩니다.
process.nextTick(콜백 함수)
다른 콜백 함수보다 우선 순위를 갖는 콜백 함수를 실행합니다.
여기서 사용한 콜백 함수는 Promise 보다 높은 우선 순위를 가집니다. 당연히 타이머 메서드보다 높은 우선순위를 가집니다.
process.exit(코드)
노드 프로세스를 종료할 수 있습니다.
exit() 에 코드 값을 0을 전달 하거나 빈 값을 사용한다면 서버에 문제가 없이 프로세스를 종료했다는 뜻입니다.
0 외의 다른 숫자가 전달되었다면 어떠한 문제가 있어 프로세스를 종료했음을 알릴 수 있습니다.