Node.js
- Chrome V8 Java Script 엔진으로 빌드된 JavaScript 런타임
- 자바스크립트로 구현된 프로그램을 해석하고 실행할 수 있는 환경
- 브라우저를 통하지 않고도 자바스크립트 구현된 프로그램 실행 가능
- 웹 애플리케이션, 데스크톱 앱, 모바일 앱, 키오스크 게임, 아두이노 같은 마이크로 컨트롤러 등 자바스크립트로 구현
- 자바스크립트만으로 프론트와 백엔드 모듀 구현할 수 있는 풀스택 개발
Node.js 특징
1. 논블로킹 I/O
I/O는 입력과 출력을 의미하는데, 파일 읽기/쓰기와 같은 파일 시스템 처리와 데이터베이스로 데이터를 전송/조회하는 일과 같은 네트워크를 통한 요청이 이에 속한다. 이런 작업을 할 시에는 논블로킹 방법을 사용할 수 있다.
함수가 실행되는 중에도 다른 작업을 동시에 진행할 수 있음
2. 싱글 스레드
동시에 하나의 작업만을 처리할 수 있다.
프로그램을 통해 직접 제어할 수 있는 스레드는 하나밖에 없기 때문에 Node.js를 싱글 스레드 방식이라 함
3. 이벤트 루프
싱글 스레드 약점을 극복하고 효율적으로 작업을 처리할 수 있도록 고안
- 콜 스택(FILO)과 콜백 큐(FIFO)의 상태를 체크하고, 콜 스택이 빈 상태가 되면 콜백 큐의 첫 번째 콜백을 콜 스택으로 이동, 이러한 작업이 반복적으로 일어나고, 이런 행동을 틱이라고 한다. 이를 통해 다중 작업 처리 효과
npm
Node Package Manager로 Node.js 기반으로 개발된 수많은 자바스크립트 패키지가 등록되어 있어서 개발자들이 쉽게 설치하고, 사용하고, 운영할 수 있도록 도와주는 Node.js 패키지 관리자
- 패키지 또는 모듈이라고 불리는 자바스크립트 라이브러리를 자신이 개발하고 있는 프로젝트에 설치해서 사용가능
- 내가 찾고자 하는 기능이 구현된 패키지를 npm웹 사이트를 통해서 쉽게 찾을 수 있다.