3장 노드의 기능 알아보기

2022. 9. 14. 13:53Node.js

3.1 REPL 와 Js파일 실행

 

REPL이란?

  • 컴파일 하지 않고 즉석에서 코드를 실행하게 해주는 node의 콘솔.
  • Read(읽고),해석하고(Eval),결과를 반환하고(Print),종료할 때까지 반복함(Loop)
  • 짧은 코드를 테스트하기에는 좋으나, 여러 줄의 코드를 실행하기에는 불편함.
  • 긴 코드는 REPL에 입력하는 것보다 JS 파일을 만들어 실행하는 것이 더 편리하다.

 

3.2 모듈

  • 특정한 기능을 함수나 변수들의 집합.
  • 보통 하나의 파일에 하나의 모듈을 담음.
  • 모듈을 사용하면 필요한 기능만을 어느 프로그램에서나 사용할 수 있다.

3.3 노드 내장 객체

 

Global

  • .전역 객체이므로 모든 파일에서 접근 가능. -> 생략이 가능함.
  • global 객체의 속성 값을 담아 파일 간 공유 가능하다 , 남용하면 유지보수에 어려움을 겪는다.

 

Console

  • Global 객체 안에 존재.
  • 디버깅을 위해 사용함.

> console.time(레이블) ~ console.timeEnd(레이블)과 함께 대응되어 같은 레이블을 가진 time과 timeEnd사이이 시간을 측정.

>console.log(내용) : 내용을 콘솔에 표시함.

>console.error(에러내용) : 에러를 콘솔에 표시함.

>console.table(배열) : 배열의 요소를 객체 리터럴에 넣으면 객체의 속성이 테이블형식으로 표현됨.

>console.dir(객체,옵션) : 객체를 콘솔에 표시할 때 사용

>console.trace(레이블) : 에러가 어디서 발생했는지 추적가능

 

타이머

  • setTimeout(콜백 함수, 밀리초) : 주어진 밀리초 이후에 콜백 함수 한번 실행.
  • setInterval(콜백 함수, 밀리초) : 주어진 밀리초 마다 콜백 함수 반복 실행.
  • setImmediate(콜백 함수) : 콜백 함수를 즉시 실행합니다.

 

  • clearTimeout(아이디) = setTimeout을 취소합니다.
  • clearInterval(아이디) = setInterval을 취소합니다.
  • clearImmediate(아이디) = setImmediate취소합니다.

Process

  • 현재 실행되는 있는 노드 프로세스에 대한 정보를 담음.
  • 일반적으로 운영체제나 실행 환경별로 다른 동작을 하고 싶을 때 사용합니다.

process.env

  • 시스템의 환경 변수를 출력.
  • 서비스의 중요한 키를 저장하는 공간으로도 사용됨
  • UV_THREADPOOL_SIZE : 노드에서 사용하는 스레드의풀의 스레드 개수를 조절할수 있음.

Process.nextTick

  • setlmmediate나 setTimeout 보다 먼저 실행됨(Promise도 마찬가지로 다른 콜백보다 우선시됨).
  • 마이크로태스크라고 부름.
  • 마이크로태스크의 재귀 호출
    • 마이크로 태스크를 재귀호출하게 되면 콜백 함수들이 실행되지 않을 수도 있음.

Process.exit

  • 실행 중인 노드 프로세스를 종료함.
  • 서버 환경에서 사용하면 서버가 멈추므로 잘 사용하지 않음.
  • 서버 외의 독립적인 프로그램에서수동으로 노드를 멈추기 위하여 사용함.
  • 인수로 코드 번호를 줄 수 있음 -> 0이거나 없을시 정상 종료, 1이면 비정상 종료.

태스크와 마이크로태스크 이벤트 루프

노드 내장 모듈

 

OS

  • 노드는 OS모듈에 정보가 담겨있어 정보를 가져올 수있음.
  • 노드에서 싱글 스레드 프로그래밍을 하면 코어 개수와는 상관없이 코어를 하나밖에 사용하지 않음. -> cluster모듈을 사용하여 프로세스를 늘릴 수 있음.

path

  • 폴더와 파일의 경로를 쉽게 조작하도록 도와주는 모듈.
  • 운영체제별로 경로 구분자가 다르기 때문에 필요함.

path관련 레퍼런스

  • path.sep : 경로의 구분자. Window -> \ , POSIX -> / 사용.
  • path.delimiter : 환경 변수의 구분자 . Window -> ; 사용 , POSIX -> : 사용.
  • path.dirname(경로) : 파일이 위치한 폴더 경로를 보여줌.
  • path.extname(경로) : 파일의 확장자를 보여줌.
  • path.basename(경로,확장자) : 파일의 이름을 확장자를 포함하여 표시함.
  • path.parse(경로) : 파일경로를 root,dir,base,ext,name으로 분리함.
  • path.format(객체) : path.parse()한 객체를 파일 경로로 합침.
  • path.normalize(경로) : / 나 \ 혼용햇을 때 정상적인 경로로 뱐환함.
  • path,isAbsolut(경로) : 파일의 경로가 절대 경로인지, 상대 경로인지 true, 나 false로 반환해줌.
  • path.relavtive(기준경로,비교경로) : 첫 번째 경로에서 두번째 경로로 가는 방법을 알려줌.
  • path.join(경로,...),path.resolve(경로,...) : 여러 인수를 하나의 경로로 합침. join은 상대경로,resolve 절대경로

자바스크립트에서는 \ 특수문자이므로 경로를 설정할때 \\두개를 써줘야 \로 인식이되어 경로를 쓸때 주의하자.

path모듈은 문제를 알아서 처리한다.

 

Url

  • 인터넷 주소를 쉽게 조작하도록 도와주는 모듈.
  • WHATWG 방식
    • Protocal -> username / passworkd -> hostname / port -> pathname -> search -> hash
  • 기존의 노드에서 사용하던 방식
    • protocal -> auth -> hostname / port -> pahtname -> query -> hash.

기존 노드에서 사용하던 url 방식과 WHATWG 방식


searchParams

'Node.js' 카테고리의 다른 글

Sql과 NoSQL (비관계형 DB)  (0) 2022.09.30
4장 http 모듈로 서버 만들기  (0) 2022.09.13