Node.js
Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임
- JS를 서버에서도 사용할 수 있도록 만든 프로그램 (스트립트 언어 x)
- V8 엔진 위에서 동작하는 환경
- 웹 서버와 같이 확장성 있는 네트워크 프로그램을 제작하기 위해 만들어짐
- 내장 HTTP 서버 라이브러리를 가지고 있어 별도의 소프트웨어 없이 동작 가능
- 싱글스레드 사용
Event
libuv
라이브러리(비동기 입출력, 이벤트 기반에 초점을 맞춘 라이브러리) 사용
- 노트의 특성인 이벤트 기반, 논 블로킹 I/O 모델 구현
- 이벤트 기반
- 이벤트가 발생할 때 무엇을 할지 미리 등록하고 이벤트 리스너에 콜백함수 등록
- 이벤트가 발생하면 리스너에 등록해둔 콜백함수를 호출
Event Loop
- 여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백 함수를 호출할지 판단
- 이벤트가 종료될 때까지 이벤트 처리를 위한 작업을 반복 (loop)
논 블로킹 I/O
- 이벤트 루프를 사용해 오래 걸리는 작업을 효율적으로 처리 가능
- 파일 시스템 접근, 네트워크 요청 등 입출력 작업은 비동기 방식으로 블로킹을 만들지 않게 처리
Express
Node.js의 프레임워크로 Node.js를 이용해 웹 어플리케이션을 만들기 위한 틀을 제공하는 라이브러리의 집합
Template Engine
- 동적인 결과를 정적인 파일에 담기 위해 사용
- 서버 코드인 JS로 연산된 결과를 변수에 넣고 변수를 뷰 파일에서도 사용할 수 있게 도와줌
- ex.
pug
, ejs
ejs
<% %>
코드로 js 코드 사용
<%=%>
코드로 서버에서 전송된 데이터 사용
참고자료
https://hanamon.kr/nodejs-개념-이해하기/
https://gongbu-ing.tistory.com/31