require
require가 제일 위에 올 필요는 없음
require를 한번 부르면 캐쉬 메모리에 올려두고 호출 할때마다 캐쉬 메모리를 확인하는 것임
require.cache : 한 번 require한 모듈에 대한 캐슁 정보가 들어있음. 그것을 보여줌
=> 이거를 잘 이용하면 node를 끄지 않아도 실시간으로 코드 수정한 것을 적용시킬 수 있음
require.main : 노드 실행 시 첫 모듈을 가리킴. -> 하지만 import는 제일 위에 있어야함
순환참조
두 개의 모듈이 서로를 require하는 상황을 조심해야 함
Dep1이 dep2를 require하고, dep2가 dep1을 require 함.
Dep1의 module.exports가 함수가 아니라 빈 객체가 됨(무한 반복을 막기 위해 의도됨)
순환참조하는 상황이 나오지 않도록 하는 게 좋음.
process
현재 실행중인 노드 프로세스에 대한 정보를 담고 있음
컴퓨터마다 출력값이 PPT와 다를 수 있음
process.env
시스템 환경 변수들이 들어있는 객체
비밀키(데이터베이스 비밀번호, 서드파티 앱 키 등)를 보관하는 용도로도 쓰임
환경 변수는 process.env로 접근 가능
일부 환경 변수는 노드 실행 시 영향을 미침
예시) NODE_OPTIONS(노드 실행 옵션), UV_THREADPOOL_SIZE(스레드풀 개수)
max-old-space-size는 노드가 사용할 수 있는 메모리를 지정하는 옵션
process.nextTick(콜백)
이벤트 루프가 다른 콜백 함수들보다 nextTick의 콜백 함수를 우선적으로 처리함
너무 남용하면 다른 콜백 함수들 실행이 늦어짐
비슷한 경우로 promise가 있음( nextTick처럼 우선순위가 높음, 같이 나올경우 순서대로 진행 됨 )
아래 예제에서 setImmediate, setTimeout보다 promise와 nextTick이 먼저 실행됨
process.exit(코드)
현재의 프로세스를 멈춤
코드가 없거나 0이면 정상 종료
이외의 코드는 비정상 종료를 의미함 -> 보통 서버에서 error가 있다고 알리기 위해 process.exit(1) 이런식으로 사용
'Node.js' 카테고리의 다른 글
암호화(단방향 :crypto, pbkdf2, 양방향), util (0) | 2020.12.10 |
---|---|
OS, path, url 모듈 (0) | 2020.12.07 |
노드 내장 알아보기 #1 (0) | 2020.12.03 |
REPL와 모듈 (0) | 2020.12.02 |
자바스크립트 정리 (0) | 2020.12.01 |