모던 JS 딥다이브를 공부하며 요약 정리해보는 글입니다.
🙀 AJAX 이전
- 이전 웹은 완전환 HTML을 서버로부터 전달받아 브라우저에서는 렌더링만 했음.
- 이 방식은 데이터 변경 시 업데이트 된 HTML을 다시 서버로부터 전송 받아야 했음
- 문제점 : 불필요한 데이터 통신, 성능, 화면 깜빡임
😽 AJAX 이후
- 변경할 부분만 서버로부터 필요 데이터를 전송받아 한정적으로 렌더링하는 방식.
- 2005년 나온 Google Map이 대표적!
Node.js는 V8으로 개발된 자바스크립트 런타임 환경.
브라우저의 자바스크립트 엔진에서만 작동하던 자바스크립트를 브라우저 이외의 환경에서도 작동하도록 한 자바스크립트 실행 환경
Node.js는 브라우저(클라이언트) 뿐만 아니라 서버사이드 애플리케이션 개발에도 사용 가능
결국 백엔드 영역까지 아우르게 됨.
JS엔진은 단일 호출 스택(Call Stack)을 사용하여 요청이 들어 올때마다 요청을 순차적으로 호출 스택에 담아 처리한다(동기식)
그럼 비동기 요청은 누가? => 브라우저의 Wep API나 Node.js(libuv라이브러리)가 담당한다.
이벤트 루프는 이런 단일 쓰레드로 동작하는 JS와 실제 JS가 구동되는 멀티 스레드 환경을 연동하기 위한 장치
( 이벤트 루프 - 콜스택에 동기식 코드 다 실행되면 비동기 코드가 큐에 대기하고 있다가 스택으로 올라와 처리되는 방식)