Node.js란?
- Node.js는 크롬 V8 엔진에서 실행되고 비동기 라이브러리인 libuv를 사용합니다 웹 브라우저 외부에서 JavaScript 코드를 실행하는 오픈 소스, 교차 플랫폼, 백엔드 JavaScript 런타임 환경입니다.
- 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효육적입니다.
- Node.js의 패키지 생태계인
npm
은 세계에서 가장큰 오픈소스 라이브러리 생태계 입니다.
npm
- npm은 Node Package Manager(노드 패키지 매니저)의 약자 입니다.
- Node.js의 패키지를 관리할 수 있는 도구이며
C
와C#
으로 구성되어 있습니다. - npm 은 Node.js를 설치하면 같이 설치되며 npm에는 Node.js에서 사용되는 각종 코드 패키지들이 모여있고, 스마트폰으로 앱스토어나 플레이스토어에서 앱을 다운로드하는 것처럼 수많은 개발에 필요한 수많은 라이브러리를 다운로드할 수 있습니다.
이벤트 기반
- 이벤트 기반이란 이벤트가 발생했을때 미리 지정해둔 작업을 수행하는 방식을 의미합니다.
- 이벤트 기반 시스템 에서는 특정 이벤트가 발생했을때 어떤 동작을 수행할지 미리 등록해 두어야 하며, 이것을 이벤트 리스너에 콜백 함수를 등록했다고 표현합니다.
- 이벤트 기반 모델에는 이벤트 루프라는 개념이 있으며, 여러 이벤트가 동시에 발생했을때 어떤 순서로 콜백함수를 호출할지를 이벤트 루프가 판단합니다.
이벤트 호출
이벤트 호출 스택을 파악하기 위해서는 이벤트루프
, 태스트 큐
, 백그라운드
3개를 알아야합니다
- 이벤트 루프 : 이벤트가 발생시 호출한 콜백 함수들을 관리하고 호출된 콜백 함수의 실행 순서를 결정하는 역학을 담당하고 노드가 종료될 때까지 이벤트 처리를 위한 작업을 반복하므로 이벤트 루프라고 불립니다.
- 태스트 큐 : 이벤트 발생후 호출 되어야할 콜백 함수들이 대기하는 공간이며 콜백들을 이벤트 루프가 정한 순서대로 대기하고 있어 이를
콜백큐
라고도 불립니다. - 백그라운드 : 타이머나 I/O 작업 콜백 또는 이벤트 리스너들이 대기하는곳입니다 이걸 그림으로 보면 이렇게 볼 수 있습니다.
전역 컨텍스트
전역 컨텍스트는 함수가 호출 되었을때 생성되는 환경을 의미합니다. 자바스크립트는 함수 실행 시 기본적으로 전역 컨텍스트 안에서 돌아간다고 볼 수 있습니다.