Node.js는 클라이언트 브라우저 외부에서 웹 애플리케이션을 실행하기 위한 오픈 소스 크로스 플랫폼 JavaScript 런타임 환경 및 라이브러리 입니다. 서버 측 웹 응용 프로그램을 만드는 데 사용됩니다.
그냥 간단하게 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임이다
런타임: 특정 언어로 만든 프로그램을 실행할 수 있는 환경.
Node.js는 비동기식 이벤트 기반 모델을 사용하므로 데이터 집약적인 애플리케이션에 적합합니다.
예를들면 비디오 스트리밍 사이트와 같은 I/O 집약적인 웹 애플리케이션을 사용할 수 있습니다.
이벤트 루프는 Node.js에서 비동기 콜백을 처리합니다. Node.js의 논블로킹 입/출력의 기반이 되며 가장 중요한 환경 기능 중 하나입니다.
I/O는 매체와 데이터를 주고받는 모든 프로그램, 작업 또는 장치를 말합니다.
NPM은 Node.js의 모든 패키지와 모듈을 관리하는 Node Package Manager의 약자입니다.
노드 패키지 관리자는 두 가지 주요 기능을 제공합니다.
모듈은 JavaScript 라이브러리와 같이 NodeJs의 함수들의 집합입니다.
Node.js에서 모듈을 사용하려면 require() 함수를 사용합니다.
Node.js에서 모듈은 관련된 코드들을 하나의 코드 단위로 캡슐화 하는 것을 말합니다.
모듈을 내보내고 필요할때, 해당 모듈 안의 기능을 불러올 수 있습니다.
package.json 파일은 Node.js 시스템의 핵심입니다. 이 파일에는 특정 프로젝트에 대한 메타데이터가 들어 있습니다. package.json 파일은 모든 Node 애플리케이션 또는 모듈의 루트 디렉터리에 있습니다.
Express는 웹 및 모바일 애플리케이션을 모두 개발할 수 있는 다양한 기능을 제공하는 유연한 Node.js 웹 애플리케이션 프레임워크입니다.
미들웨어는 요청 및 응답 객체를 수신하는 기능입니다.
미들웨어 기능이 수행하는 대부분의 작업은 다음과 같습니다.
pending(비동기 처리 로직이 아직 완료되지 않는 상태)
new Promise로 Promise가 생성된 직후부터 resolve나 reject가 호출되기 전까지의 순간을 pending 이라고 합니다.
fullfilled(처리가 완료되어 프로미스가 결과값을 반환한 상태)
만약 비동기 처리함수 값이 성공이라면 resolve 메소드가 호출되고,resolve 메소드의 인자로 설정한, 비동기 함수의 결과값이 전달된다. 이 결과값은 then을 통해 후속 처리된다.
Rejected(처리가 실패하거나 오류가 발생한 상태)
await 를 통해 Promise 반환 값을 받아 올 수 있다.