티스토리 뷰

노드란

- Node.js 는 크롬 v8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다.


* 런타임

컴퓨터 과학에서 컴퓨터 프로그램이 실행되고 있는 동안의 동작을 말한다


* 런타임 환경(노드 정의에 좀 더 가까움)

컴퓨터가 실행되는 동안 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상머신의 상태이다.

노드가 깔려만 있으면 어느 플랫폼에서나 자바스크립트 런타임을 쓸 수 있다

런타임 : 자바스크립트를 웹브라우저 밖 환경에서도 쓸 수 있게 해주는 프로그램


노드 설치

- https://nodejs.org/ko/ 에서 다운로드


노드 버전 확인

- cmd 창에서

node -v

npm -v


* npm

https://m.blog.naver.com/magnking/220961896609



노드 실행

- 커맨드 창에 node 라고 작성 → 자바스크립트를 사용할 수 있게 된다.

- 에디터에서 js 파일을 만들어 에디터 내부 터미널을 이용해 실행 가능

vscode → helloNode.js 생성 → 코드 작성 → 터미널 → node helloNode.js  → 실행된다
- .js 확장자 없애도 가능


노드 나가기

ctrl + c, 2번 누르기

.exit


node의 핵심 3가지 

이벤트 기반, 논블로킹, 싱글쓰레드  제일 중요한 핵심



이벤트 기반

- 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식

- 노드도 이벤트 기반 방식으로 동작

ex) 이벤트 기반 예

이벤트가 발생하면 이벤트 리스너에 등록해둔 콜백함수를 호출, 발생한 이벤트가 없거나 발생했던 이벤트를 다 처리하면 다음 이벤트가 발생할때 까지 대기하는 일련의 과정을 이벤트기반이라고 함.



이벤트 루프

- 이벤트 발생 시 호출할 콜백 함수들을 관리, 어떤 순서로 콜백 함수를 호출할 지 이벤트 루프가 판단.

- 노드가 종료될 때 까지 이벤트 처리를 위한 작업을 반복해서 루프라고 부름


태스크 큐

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

- 콜스택 안이 비어져있을 때만 태스크 큐 안의 함수들을 콜스택 영역으로 이벤트 루프가 가져온다.


언제 태스크 큐에 들어가는가?

setTimeOut

setInterval

setImmediate

Promise resolve, reject

(async, away)

eventListener에 달린 콜백함수들



*이벤트 루프 순서 예제

1
2
3
4
5
6
function run(){
    console.log('3초 후 실행');
}
console.log('시작');
setTimeout(run,3000);
console.log('끝');
cs

* 결과

시작

3초 후 실행    


코드 실행 순서

1. 콜 스택에 쌓임

- 이벤트 루프는 계속 돌고 있다.






2. setTimeOut 실행 시 run은 백그라운드로 이동






3. 백그라운드에서 3초 후 태스크 큐로 옮겨간다.






4. 함수 실행이 끝나 콜 스택이 비워지면, 이벤트 루프가 콜백을 콜스택으로 옮긴다.




논블로킹

- 함수를 태스크 큐로 옮겨져 실행 순서가 달라지는 것을 논블로킹이라 부른다.

- I/O, 네트워크에서 이런 방식으로 동작한다.



싱글쓰레드

- 쓰레드는 쉽게말해 일을 처리하는 팔이다.

싱글 쓰레드(팔이 하나) : 한번에 한가지 일밖에 못함

멀티쓰레드(파일 여러개) - 한번에 여러개 일 가능

- 멀티 쓰레드가 싱글 쓰레드 보다 더 좋기만 한것은 아니다.



최종 정리

- 이벤트 루프 잘 알아야

- 노드는 이벤트 기반, 싱글 스레드, 논 블로킹 방식으로 작동

- 운영체제의 프로세스, 쓰레드 차이 보기

댓글