[Node.js 교과서] ch1. 노드 시작하기
node.js: Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임
서버: 네트워크를 통해 클라이언트(요청을 보내는 주체)에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
이벤트 기반: 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식(클릭, 네트워크 요청 등).
- 이벤트 리스너에 콜백 함수 등록
- 이벤트 발생
- 등록된 콜백 함수 호출
이벤트 루프: 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 실행 순서를 결정하는 역할 담당. 노드가 종료될 때까지 이벤트 처리를 위한 작업을 반복하므로 루프라고 함
백그라운드: setTimeout 같은 타이머나 이벤트 리스너들이 대기하는 곳. 자바스크립트가 아닌 언어로 작성된 프로그램. 여러 작업이 동시에 실행될 수 있음
태스크 큐: 이벤트 발생 후, 백그라운드에서는 태스크 큐로 타이머나 이벤트 리스너의 콜백 함수를 보냄. 정해진 순서대로 콜백들이 줄 서 있으므로 콜백 큐라고도 부름
- 호출 스택에 쌓임
- setTimeout 실행 시 콜백 run은 백그라운드로 보냄
- 백그라운드에서 3초 후 태스크 큐로 보냄
논 블로킹: 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행함(setTimeout(콜백, 0))
블로킹: 이전 작업이 끝나야만 다음 작업을 수행함
I/O: 파일 시스템 접근(파일 읽기, 쓰기, 폴더 만들기 등), 네트워크를 통한 요청
프로세스: 운영체제에서 할당하는 작업의 단위. 프로세스 간에는 메모리 등의 자원을 공유하지 않음
스레드: 프로세스 내에서 실행되는 흐름의 단위. 부모 프로세스의 자원을 공유함
멀티스레딩: 하나의 프로세스 안에서 여러 개의 스레드 사용, CPU 작업이 많을 때 사용, 프로그래밍 어려움
멀티 프로세싱: 여러 개의 프로세스 사용, I/O 요청이 많을 때 사용, 프로그래밍 쉬움
var: 함수 스코프
const/let: 블록 스코프
화살표 함수: 변수에 대입하면 재사용 가능, return문 줄이기, this 바인드 방식