Node.js란?

설정·2021년 4월 14일
0

Node.js란?

노드는 V8엔진으로 만들어진 자바스크립트 런타임

  • V8 : JavaScript를 기계어로 컴파일
  • 런타임 : 프로그래밍 언어가 구동되고 있는 환경

    Node.js란 자바스크립트를 기계가 알아먹을 수 있게 기계어로 컴파일 해주는 엔진으로 빌드된 자바스크립트가 구동중인 환경

Node.js 특징

이벤트 기반 및 논블록킹 I/O 모델
유저의 클릭이나 네트워크에 리소스를 요청하는 이벤트가 논블록킹으로 이루어지는 Input/Output 모델

  • Chrome V8엔진
  • 싱글스레드(Single Thread) 이벤트 루프(Event Loop) 기반
  • 비동기 I/O 처리(Non-Blocking I/O)
  • 모듈제공(NPM)

🧐 동기(Synchronous)와 비동기(Asynchronous)

동기와 비동기는 클라이언트가 서버로 요청할 때 데이터를 받는 방식을 말한다.

  • 동기 : 동시에 일어난다는 의미로, 요청이 발생하면 그 요청이 끝날 때까지 다음 작업은 대기상태
  • 비동기 : 동시에 일어나지 않으며, 특정 작업을 수행할 때 작업의 결과를 기다리지 않고 다음 작업을 수행

🧐 블록킹(Blocking)과 논블록킹(Non-Blocking)

블록킹과 논블록킹을 동기, 비동기와 같다고 생각하지만, 보는 관점이 다르다.
블록킹과 논블록킹 : 호출되는 함수가 바로 리턴을 하느냐 마느냐(직접 제어가 가능한가 못한가)
동기와 비동기 : 호출되는 함수의 작업 완료 여부를 누가 신경 쓰느냐

  • 블록킹(Blocking) : 직접 제어할 수 없는 대상의 작업이 끝날 때 까지 제어권을 넘겨주지 않음
    (호출된 함수가 자신의 작업이 모두 마칠 때 까지 호출한 함수에게 제어권을 넘겨주지 않고 대기)
  • 논블록킹(Non-Blocking) : 대상의 작업처리 여부와 상관없음
    (호출된 함수가 바로 리턴해서 호출한 함수에게 제어권을 넘겨주어 호출한 함수가 작업을 할 수 있게 해줌)

0개의 댓글