Server의 역할도 수행할 수 있는 자바스크립트 런타임(실행기)
* Node.js는 서버가 아니다 ! 그러나 js로 쓰여진 서버로 작동할 수 있는 소스코드를 실행시켜서 서버를 만들어 줌
어떤 이벤트가 발생할 때, 미리 지정해둔 작업을 수행하는 방식
ex) 'A'버튼을 클릭하면 'Hello'를 출력해!
- 이벤트 리스너 : 이벤트를 등록하는 함수
- 콜백 함수 : 이벤트가 발생했을 때, 실행되는 함수
쉽게 말해, 작업1이 끝나지 않아도 작업2가 실행될 수 있다.
Node.js는 원래 멀티스레드다. 그 중에 직접 제어할 수 있는 게 1개일 뿐이라서 싱글 스레드가 특징이라고 표현한다. (Node.js ver.14 이후 부터는 멀티 스레드를 지원한다고 한다.)
아래 그림은 논블로킹I/O와 싱글 스레드를 표현한다.
주문이 밀려들어오면 주문을 받고, 순서대로 고객들에게 서빙을 한다.