티스토리 뷰
노드란
- Node.js 는 크롬 v8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다.
* 런타임
컴퓨터 과학에서 컴퓨터 프로그램이 실행되고 있는 동안의 동작을 말한다
* 런타임 환경(노드 정의에 좀 더 가까움)
컴퓨터가 실행되는 동안 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상머신의 상태이다.
노드가 깔려만 있으면 어느 플랫폼에서나 자바스크립트 런타임을 쓸 수 있다
런타임 : 자바스크립트를 웹브라우저 밖 환경에서도 쓸 수 있게 해주는 프로그램
노드 설치
- https://nodejs.org/ko/ 에서 다운로드
노드 버전 확인
- cmd 창에서
node -v
npm -v
* npm
https://m.blog.naver.com/magnking/220961896609
노드 실행
- 커맨드 창에 node 라고 작성 → 자바스크립트를 사용할 수 있게 된다.
- 에디터에서 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, 네트워크에서 이런 방식으로 동작한다.
싱글쓰레드
- 쓰레드는 쉽게말해 일을 처리하는 팔이다.
싱글 쓰레드(팔이 하나) : 한번에 한가지 일밖에 못함
멀티쓰레드(파일 여러개) - 한번에 여러개 일 가능
- 멀티 쓰레드가 싱글 쓰레드 보다 더 좋기만 한것은 아니다.
최종 정리
- 이벤트 루프 잘 알아야
- 노드는 이벤트 기반, 싱글 스레드, 논 블로킹 방식으로 작동
- 운영체제의 프로세스, 쓰레드 차이 보기
- Total
- Today
- Yesterday
- 명품 c++ 실습
- 자바 에센셜 실습문제
- 자바스크립트 그래프
- 파이썬 예제
- css 박스
- 파이썬 클래스
- 파이썬 리스트
- 파이썬 객체
- 백준 11501
- 자바
- 웹
- 파이썬 선택문
- 백준 1874
- 파이썬 문자열
- 자바스크립트 자료구조
- 파이썬
- 파이썬 진수 변환
- 버츄어박스
- css
- 파이썬 터틀
- 자료구조
- 파이썬 연산자
- 파이썬 if문
- 파이썬 for
- css 그리드
- 파이썬 함수
- 파이썬 while
- 파이썬 단계적 개선
- 백준 10451
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |