노드(Node.js) - 1주차

임승혁·2022년 3월 6일
0

노드의 정의 : JavaScript 런타임

- javascript로 만든 프로그램들을 실행할 수 있게 해준다.
- 런타임 : 특정 언어로 만든 프로그램을 실행할 수 있는 환경
- Chrome의 V8엔진

노드의 내부구조

- V8과 libuv를 포함한다.
- V8엔진 : 오픈소스 JavaScript 엔진, JavaScript 엔진이란 JavaScript 코드를 실행하는
          프로그램 또는 인터프리터
- libuv : 이벤트 기반, 비동기/non-blocking 입출력 모델을 구현한 라이브러리

노드의 특성

  1. 이벤트 기반 : 이벤트가 발생할 때, 미리 저장해둔 작업을 수행하는 방식
  2. non-blocking IO : 이전 작업이 완료될 때까지 대기하지 않고, 다음 작업을 수행
    ex) I/O 작업, 압축, 암호화등 수행하는데 오래 걸리는 작업만
  3. 싱글 스레드 : 주어진 일을 동시에 하나 밖에 처리하지 못한다.
    -> 블로킹이 발생할 경우, 나머지 작업은 모두 대기하게 되는데 이 방식은 너무 비효율적
    -> 그래서 논블로킹 모델을 채택하여 일부 코드를 백그라운드에서 실행하도록 한다.
    -> 즉 요청을 먼저 받고, 완료될 때 응답하고 I/O 관련 코드가 아닌 경우, 싱글 스레드, 블로킹
    모델과 동일하다.

노드의 역할

  1. 서버 활용 : 노드는 서버를 구성할 수 있게하는 모듈을 제공
  2. 서버 외 활용 : JavaScript 런타임으로 용도가 서버에만 한정되지 않는다. 웹, 모바일, 데스크탑 애플리케이션에도 사용 가능하다.
    ex) 웹 프레임워크 : React, Angular, Vue, Meteor
    ex) 모바일 웹 프레임워크 : React Native, Ionic, NativeScript
    ex) 데스크탑 개발 도구 : Electron
profile
한성공대생

0개의 댓글