*윈도우10을 기준으로 정리하였습니다.
REPL
Read, Eval, Print, Loop 의 준말로,
입력한 코드를 읽고 해석하고 결과물을 반환하고 종료할 때까지 반복한다고 해서 REPL 이라고 부른다.
노드의 REPL은 명령 프롬프트에서 node를 입력한다.


node를 입력하면 프롬프트가 > 모양으로 바뀌어 파이썬처럼 한줄씩 코드를 실행할 수가 있다.
따라서 한 두줄짜리 코드를 테스트하는 용으로 좋으나, 여러 줄 코드는 js파일을 만들어 통째로 실행 시키는 것이 좋다.
js파일을 만들고, 콘솔에서
node [자바스크립트 파일경로]로 실행한다. 확장자는 생략이 가능하다.
모듈이란 특정한 기능을 하는 함수나 변수들의 집합

보통 파일 하나가 모듈 하나가 되며, 자바스크립트에서 코드를 재사용하기 위해 함수로 만드는 것과 비슷하다.
//var.js
const odd = '홀수';
const even = '짝수';
module.exports{ //여기있는 얘들을 갖다 쓸 수 있음
odd, //원래는 odd:odd임. 변수들을 담은 객체를 대입한 것
even, //원래는 even:even임. 변수들을 담은 객체를 대입한 것
//객체만 대입해야 하는 것이 아니라 함수나 변수를 대입해도 된다.
};
module.exports에 변수를 담은 객체를 대입했고, 다른 파일에서 이 파일을 불러오면 module.export에 대입된 값을 사용할 수 있다.
//func.js
const {odd, even} = require('./var'); //확장자는 생략한다. var 모듈을 불러옴
function checkOddOrEven(num){
if (num %2 ) {
return odd;
}
return even;
}
module.exports = cehckOddOrEven;
보통 모듈 호출 후 모듈의 변수 값을 수정하거나 하는 방식은 혼란을 일으킬 수 있기에, 모듈 속 자료들을 그대로 갖다쓰는 방식으로만 활용하자.
그리고 보통 모듈을 호출할 때는 const를 쓴다!
Node.js의 전역 정보를 가지는 객체를 반환한다.
보통 디버깅을 위해 사용된다
console.time(레이블): console.timeEnd(레이블)과 대응되어 같은 레이블을 가진 time과 timeEnd사이의 시간을 측정한다. 즉 둘이 같이 써야함
console.log(내용) : 평범한 로그를 콘솔에 표시한다. 디버깅에 용이
console.error(에러 내용) : 에러를 콘솔에 표시한다
console.dir(객체, 옵션) : 객체를 콘솔에 표시할 때 사용, 옵션은 {키:값} 형식임. colors : true로 하면 콘솔에 색이 추가가 되고, depth : 깊이 수는 객체 안의 객체를 몇 단계까지 보여줄지 결정함
console.trace(레이블) : 에러가 어디서 발생했는지 추적할 수 있게 해줌. 위치 추적을 중점으로 사용
특정 기간 후에 주어진 함수를 호출함.
타이머는 실행하기 원하는 정확한 시간이 아니라, 제공된 콜백이 일정 시간 후에 실행되어야 하는 기준시간을 지정하는 것임
운영체제 스케줄링이나 다른 콜백 실행 때문에 지연될 수 있다.
이 타이머 함수들은 모두 아이디를 반환하며, 아래 함수들을 사용하여 타이머를 취소할 수 있다.
윗 순서대로 각각 clearTimeout(아이디), clearInterval(아이디), clearImmediate(아이디)와 대응된다.
현재 파일의 경로나 파일명을 알아야 할 때 사용. 보통은 path모듈과 함께 사용한다.
module : 현재 모듈을 나타내는 객체에 대한 참조이며, 전역이 아니라 각 모듈의 지역임
module.exports : 모듈 내용을 모듈 밖에서 참조하려면 module.exports를 사용하여 외부 참조가 가능하도록 만들 수 있다.
외부에서 특정 모듈을 참조하려면 require()가 필요

현재 실행되고 있는 노드 프로세스에 대한 정보를 담고 있음
| 함수명 | 쓰임 |
|---|---|
| process.version | 설치된 노드 버전 |
| process.arch | 프로세스아키텍처 정보 |
| process.platform | 운영체제 플랫폼 정보 |
| process.pid | 프로세스 아이디 |
| process.uptime() | 프로세스가 시작된 후 흐른 시간. 단위는 초 |
| process.execPath | 노드의 경로 |
| process.cwd | 현재 프로세스가 실행되는 위치 |
| process.cpuUsage() | 현재 cpu 사용량 |
시스템의 환경 변수에 대한 정보
노출되면 곤란한 중요한 정보는 process.env의 속성으로 대체함
const secretId = process.env.SECRET_ID;
const secretCode = process.env.SECRET_CODE;
//이후 직접 process.env에 SECRET_ID와 SECRET_CODE를 넣어주면 된다.
이벤트 루프가 다른 콜백 함수들보다 nextTick의 콜백 함수를 우선 처리하도록 만듦. setImmediate나 setTimeout보다 먼저 실행된다.
실행 중인 노드 프로세스를 종료함. 서버에는 거의 사용하지 않고 서버 외의 독립적인 프로그램에서 노드를 수동적으로 멈추게 하기 위해 사용함
vanilla JS는 운영체제의 정보를 가져올 수 없지만, node.js는 os모듈에 정보가 담겨져 있어 운영체제에 대한 정보를 가져올 수 있다.
폴더와 파일의 경로를 쉽게 조작하도록 도와주는 모듈
join과 resolve의 차이?
path.resolve는 /를 만나면 절대경로로 인식해서 앞의 경로를 무시, path.join은 상대경로로 처리함path.join('/a','/b','c'); //결과: /a/b/c path.resolve('/a','/b','c'); //결과: /b/c