본문 바로가기

Backend Study/Node.js

Node.js 특징

1. 자바 스크립트 런타임

노드는 자바스크립트의 런타임이다. (런타임은 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 뜻한다. )

기존의 자바 스크립트는 프로그램을 인터넷 브라우저위에서만 실행할 수 있었다. 

 

2. 이벤트 기반 

이벤트 기반은 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식이다.  ex. 클릭, 네트워크 요청

이벤트는 미리 등록을 해둬야하는데 이것을 이벤트 리스너에 콜백 함수를 등록한다고 표현한다. 노드도 이벤트 리스너에 등록해둔 콜백 함수를 호출한다.

 

*이벤트 루프란?

여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백 함수를 호출할지 결정한다.

*태스크 큐란?

이벤트 발생 후 호출되어야 할 콜백 함수들이 기다리는 공간이다

*백그라운드란?

타이머나 I/O 작업 콜백 또는 이벤트 리스너들이 대기하는 곳이다. ex. setTimeout(run, 3000); 이면 run은 백그라운드에서 3초 대기했다 태스크 큐로 이동한다. 그 이후에 호출 스택으로 올린다. 

 

3. 논 블로킹 I/O

오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 그 함수가 다시 태스크 큐를 거쳐 호출 스택으로 올라오기를 기다리는 방식이다. I/O 작업에서 시간적 이득을 많이 볼 수 있다.

setTimeout(콜백, 0)은 코드를 논블로킹으로 만들기 위해 사용하는 기법이다. 

 

4. 싱글 스레드

노드는 싱글스레드, 멀티 프로세싱 방식이다. ➡️ I/O가 많은 작업에 적합하다. 

'Backend Study > Node.js' 카테고리의 다른 글

Node.js 모듈 이용하기  (0) 2022.08.04
Node.js 설치하기  (0) 2022.08.03
자바 스크립트 var, let, const 차이점  (0) 2022.08.02
Node.js 파라미터 전달받기  (0) 2022.07.22
Node js. 시작하기 (npm, express ..)  (0) 2022.07.22