Node.js 시작 (08.09)

최정석·2023년 8월 9일
0
post-thumbnail

노드 란?

  • 자바스크립트 엔진으로 빌드 된 자바스크립트 런타임

    노드의 특징
  • 이벤트 기반 비동기
  • 논 블로킹 I/O
    • 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행
  • 노드 프로세스는 멀티 스레드이지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현
    • 노드 14버전부터 멀티 스레드 사용 가능
  • 싱글스레드
    • 주어진 일을 하나밖에 처리하지 못함
    • 블로킹이 발생하는경우 나머지 작업은 대기

노드 서버의 장점

  • 멀티 스레드 방식에 비해 컴퓨터 자원을 적게 사용함
  • I/O 작업이 많은 서버로 적합 (input/output)
  • 멀티 스레드 방식보다 쉬움
  • 웹 서버가 내장되어 있음
  • 자바스크립트를 사용함
  • JSON 형식과 호환하기 쉬움

노드 서버의 단점

  • CPU 코어를 하나만 사용함
  • CPU 작업이 많은 서버로는 부적합
  • 하나뿐인 스레드가 멈추지 않도록 관리해야 함

모듈

  • 노드는 자바스크립트 코드를 모듈로 만들 수 있음
    • 모듈: 특정한 기능을 하는 함수나 변수들의 집합
    • 모듈로 만들면 여러 프로그램에서 재사용 가능

__filename, __dirname

  • filename: 현재 파일 경로
  • dirname: 현재 폴더(디렉토리) 경로

require

  • 한번 불러왔을때 파일을 읽어오고 캐싱함
  • 다음에 불러올땐 메모리에 저장되어있는 파일을 불러옴
  • 두 개의 모듈이 서로 require하는 상황 => 무한 반복을 막기 위해 module.exports가 빈 객체가 됨

path

  • 각 OS마다 경로 표시가 다르기 때문에 모든 경우를 분기처리하기 까다로움
  • path는 OS마다 알아서 경로의 분기처리
  • path.resolve는 /를 절대경로로 처리, join은 상대경로로 처리

버퍼

  • 일정한 크기로 모아두는 데이터
  • 일정한 크기가 되면 한 번에 처리
  • 버퍼링: 버퍼에 데이터가 찰 때까지 모으는 작업

스트림

  • 데이터의 흐름
  • 일정한 크기로 나눠서 여러 번에 걸쳐서 처리
  • 스트리밍: 일정한 크기의 데이터를 지속적으로 전달하는 작업

1개의 댓글

comment-user-thumbnail
2023년 8월 9일

큰 도움이 되었습니다, 감사합니다.

답글 달기