자바스크립트는 정적인(Static)문서를 조금 더 동적(Dynamic)으로 표현할 수 있도록 만들어졌는데NetScape
라는 웹브라우저를 통해 상호작용을 강조하기 위해 간단한 기능을 넣어 만든것이 자바스크립트의 시초
Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다.
Node.js는 V8엔진으로 빌드되었지만 구글이 만든것은 아니고 자바스크립트를 실행할 수 있는 환경이라고 보면된다
Node.js는 논 블로킹(Non-blocking)I/O, 싱글 스레드(Single Threed), 이벤트 루프(Event Loop)의 특성이 있다
기존의 블로킹(Blocking) : I/O는 프로그램 내부에서 함수를 호출하면 호출된 함수가 작업을 마칠 때까지 대기하는 방식
논 블로킹(Non-blocking) : I/O는 함수가 실행되는 중에도 다른 작업을 동시에 진행할 수 있는 장점이 있다.
싱글 스레드(Single Thread) : 스레드 하나를 사용하는 것이며, 동시에 하나의 작업만을 처리할 수 있다.
싱글 스레드를 고집하는 이유
이벤트 루프(Event Loop)는 JavaScript가 가지고 있던 싱글 스레드의 약점을 극복하기 위해 효율적으로 작업을 처리할 수 있 특성이다.