Node.js 는 웹서버가 아니다.
V8 engine은 구글에서 제공하는 강력한 오픈 소스 자바스크립트, 웹어셈블리 엔진이다. ECMAScropt(ECMA-262) 3rd Edition 규격의 C++로 작성되었으며 Chrome, Electron, Node.js 등에서 사용된다.
자바스크립트를 바이트코드로 컴파일하고 실행하는 방식을 사용하는데,
속도향상을 위해 인라인 캐싱과 같은 최적화 기법을 적용했다.
런타임은 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 의미한다.
그러므로 Node.js나 Chrome 등은 자바스크립트가 구동되는 환경이므로 자바스크립트 런타임이라고 할 수 있다.
(Node.js의 런타임 환경(Runtime Environment)과 Chrome의 런타임 환경은 같은 엔진(V8 engine)을 공유하지만 다른 환경을 갖고 있다.)
이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 말한다.
이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 뭘 할지 미리 등록해야한다.
이것을 이벤트 리스너에 콜백함수를 등록한다.
이벤트 기반을 예를 들자면, 이벤트가 발생하면 이벤트 리스너(event listener)에 등록해둔 콜백함수(callback)를 호출하고 발생한 이벤트가 없거나 발생했던 이벤트를 전부 처리했다면 다음 이벤트가 발생할때 까지 대기하는 과정을 말한다.