on
node - 1. 노드 시작하기
node - 1. 노드 시작하기
1.1 핵심개념
1.1.1 서버
- 클라이언트의 요청에 응답하는 주체
1.1.2 노드
- 자바스크립트 프로그램이 서버로 기능하기 위한 도구를 제공하는 것이 노드
- 즉 자바스크립트 런타임(프로그램을 실행할 수 있는 환경)이 노드이다.
1.1.3 이벤트 기반
- 이벤트가 발생했을 때 지정된 작업을 수행하는 것
- 작업을 콜백, 리스너로 등록한다
- 호출스택에서 콜백을 백그라운드로 보내고 백그라운드에서 태스크 큐로 이동하면 이벤트루프를 통해 호출스택으로 태스크가 이동한다.
1.1.4 논블로킹I/O
- 병렬처리가 가능한 I/O, 네트워크 작업의 경우 작업을 백그라운드로 넘기면 동시 처리가 가능하다. 이를 논 블로킹이라고 한다.
- 정해진 순서대로 수행된다면 블로킹이다.
function longRunningTask() { // 오래걸림 console.log('작업 끝'); } console.log("시작"); setTimeout(longRunningTask, 0); console.log("다음 작업");
- setTimeout으로 longRunningTask 콜백함수를 백그라운드로 보낸다. 이후에 태스크 큐로 이동하기 때문에 정해진 순서대로 실행되지 않는다.
- "다음작업"이 먼저 수행되고 longRunningTask가 실행된다.
- 전체 실행시간이 줄어든 것은 아니지만 간단한 작업을 먼저 처리하고 오래걸리는 작업을 나중에 처리한다는 점에서 의의가 있다.
1.1.5 싱글 스레드
- 프로세스는 cpu시간, 독립된 메모리공간 할당 단위이다. 쓰레드는 프로세스 안에서 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다.
- 노드는 싱글스레드 논블로킹 방식을 채택한다.
1.2 서버로서 노드
- 노드는 논 블로킹 방식을 채택하기 때문에 I/O요청이 많은 서버에 적합하다.
- 실시간채팅, 주식차트, json을 제공하는 api 서버가 노드를 많이 사용한다.
1.3 서버 외의 노드
- 노드 기반으로 돌아가는 웹 프레임워크로는 angular, react등이 있다
- react native는 노드 기반으로 모바일 개발도구로 사용된다.
from http://jsdysw.tistory.com/259 by ccl(A) rewrite - 2021-12-29 16:00:45