Node.js 교과서 3장 정리 (1)

·2022년 1월 11일
0

*윈도우10을 기준으로 정리하였습니다.

REPL 사용하기


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를 쓴다!

global


  • 브라우저의 window같은 역할
  • 모든 파일에서 접근 가능
  • window처럼 생략도 가능 (console, require도 global의 속성)

Node.js의 전역 정보를 가지는 객체를 반환한다.

이 부분에서 궁금한 것이 생겼다. 이 부분은 추후 예정


console


  • 보통 디버깅을 위해 사용된다

  • console.time(레이블): console.timeEnd(레이블)과 대응되어 같은 레이블을 가진 time과 timeEnd사이의 시간을 측정한다. 즉 둘이 같이 써야함

  • console.log(내용) : 평범한 로그를 콘솔에 표시한다. 디버깅에 용이

  • console.error(에러 내용) : 에러를 콘솔에 표시한다

  • console.dir(객체, 옵션) : 객체를 콘솔에 표시할 때 사용, 옵션은 {키:값} 형식임. colors : true로 하면 콘솔에 색이 추가가 되고, depth : 깊이 수는 객체 안의 객체를 몇 단계까지 보여줄지 결정함

  • console.trace(레이블) : 에러가 어디서 발생했는지 추적할 수 있게 해줌. 위치 추적을 중점으로 사용


Timers


특정 기간 후에 주어진 함수를 호출함.
타이머는 실행하기 원하는 정확한 시간이 아니라, 제공된 콜백이 일정 시간 후에 실행되어야 하는 기준시간을 지정하는 것임
운영체제 스케줄링이나 다른 콜백 실행 때문에 지연될 수 있다.

  • setTimeout(콜백 함수, 밀리초) : 주어진 밀리초 이후에 콜백 함수 실행
  • setInterval(콜백 함수, 밀리초) : 주어진 밀리초 마다 콜백 함수 반복 실행
  • setImmediate(콜백 함수) : 얼마나 많은 타이머가 앞에 존재하느냐 상관 없이, 콜백 함수 즉시 실행

이 타이머 함수들은 모두 아이디를 반환하며, 아래 함수들을 사용하여 타이머를 취소할 수 있다.

윗 순서대로 각각 clearTimeout(아이디), clearInterval(아이디), clearImmediate(아이디)와 대응된다.

__ filename, __dirname


현재 파일의 경로나 파일명을 알아야 할 때 사용. 보통은 path모듈과 함께 사용한다.

module, exports


  • module : 현재 모듈을 나타내는 객체에 대한 참조이며, 전역이 아니라 각 모듈의 지역임

  • module.exports : 모듈 내용을 모듈 밖에서 참조하려면 module.exports를 사용하여 외부 참조가 가능하도록 만들 수 있다.

외부에서 특정 모듈을 참조하려면 require()가 필요

  • exports : exports는 module.exports의 단축형태임. 차이점이 있다면 하나의 객체 데이터로 프로퍼티나 메소드를 가져야 함. 그냥 헷갈리면 module.exports를 쓰자

Process


현재 실행되고 있는 노드 프로세스에 대한 정보를 담고 있음

함수명쓰임
process.version설치된 노드 버전
process.arch프로세스아키텍처 정보
process.platform운영체제 플랫폼 정보
process.pid프로세스 아이디
process.uptime()프로세스가 시작된 후 흐른 시간. 단위는 초
process.execPath노드의 경로
process.cwd현재 프로세스가 실행되는 위치
process.cpuUsage()현재 cpu 사용량

process.env


시스템의 환경 변수에 대한 정보
노출되면 곤란한 중요한 정보는 process.env의 속성으로 대체함

const secretId = process.env.SECRET_ID;
const secretCode = process.env.SECRET_CODE;
//이후 직접 process.env에 SECRET_ID와 SECRET_CODE를 넣어주면 된다.

process.nextTick(콜백)


이벤트 루프가 다른 콜백 함수들보다 nextTick의 콜백 함수를 우선 처리하도록 만듦. setImmediate나 setTimeout보다 먼저 실행된다.

process.exit(코드)


실행 중인 노드 프로세스를 종료함. 서버에는 거의 사용하지 않고 서버 외의 독립적인 프로그램에서 노드를 수동적으로 멈추게 하기 위해 사용함

os


vanilla JS는 운영체제의 정보를 가져올 수 없지만, node.js는 os모듈에 정보가 담겨져 있어 운영체제에 대한 정보를 가져올 수 있다.

  • os.tmpdir() : 임시 저장 폴더의 위치
  • os.endianness() : CPU의 endianness(BE 또는 LE)
  • os.hostname() : 호스트(컴퓨터) 이름
  • os.type() : 운영체제 이름
  • os.platform() : 운영체제 플랫폼
  • os.arch() : 운영체제 아키텍처
  • os.release() : 운영체제 버전
  • os.uptime() : 운영체제가 실행된 시간
  • os.loadavg() : 로드 에버리지 정보를 담은 배열
  • os.totalmem() : 시스템의 총 메모리
  • os.freemem() : 시스템의 가용 메모리
  • os.cpus() : CPU의 정보를 담은 객체. CPU의 세부 정보를 반환합니다.

path


폴더와 파일의 경로를 쉽게 조작하도록 도와주는 모듈

  • path.sep : 현재 운영체제의 경로의 구분자 확인
  • path.dirname('파일경로.확장자') : 파일이 위치한 폴더경로 확인
  • path.basename('파일경로. 확장자') : 파일명.확장자 확인. 파일명만 확인하고 싶을 경우 basename의 두번째 인자로 파일의 확장자를 넣어주면 된다.
  • path.parse(경로) : 파일경로를 root, dir, base, ext, name으로 분리함
  • path.format(객체) : path.parse()한 객체를 파일 경로로 합침
  • path.normalize(경로) : \나 /를 실수로 여러번 사용했거나 혼용했을 경우 정정해줌
  • path.isAbsolute(경로) : 파일의 경로가 절대경로인지 상대경로인지 true나 false로 알려줌
  • path.relative(기준경로, 비교경로) : 기준 경로에서 비교 경로로 가는 법을 알려줌
  • path.join(경로, ...) : 하나의 경로로 합쳐줌. 상대경로인 ..와 .도 알아서 처리
  • path.resolve(경로, 경로, ...) : 여러개의 경로를 알아서 합쳐줌.

join과 resolve의 차이?
path.resolve는 /를 만나면 절대경로로 인식해서 앞의 경로를 무시, path.join은 상대경로로 처리함

path.join('/a','/b','c'); //결과: /a/b/c
path.resolve('/a','/b','c'); //결과: /b/c
profile
풀스택 호소인

0개의 댓글