Node.js는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임입니다.
⇒ 노드를 통해 다양한 자바스크립트 애플리케이션을 실핼할 수 있고, 서버를 실행하는데 제일 많이 사용됨.
⇒ V8 JavaScript 엔진은 JS파일을 컴퓨터가 읽을 수 있도록 변환해주는 역할, 구글이 Chrome의 성능을 높여려고 개발하여, 코드 번역 방식을 바꿔 속도를 개선해 오픈소스로 공개함
JavaScript가 높은 생산성과 편리함을 지녔고 프론트엔드 주요 언어이기 때문에 백엔드까지 영역을 확대해 풀스택 개발이 수월해졌다.
Node.js의 내부는 크게 다음과 같은 주요 구성 요소로 이루어져 있습니다:
Event Loop (이벤트 루프):
Node.js의 핵심이며, 비동기 이벤트를 처리하는 메인 루프입니다.
이벤트 큐에서 이벤트를 받아 처리하고, 비동기 작업을 수행합니다.
Libuv 라이브러리:
Node.js의 I/O 작업 및 이벤트 루프를 구현하는 주요 라이브러리로, 크로스 플랫폼을 지원합니다.
I/O 작업, 타이머, 이벤트 처리 등을 담당합니다.
V8 엔진:
Google Chrome 브라우저에서 사용되는 JavaScript 엔진으로, JavaScript 코드를 빠르게 실행합니다.
JIT(Just-In-Time) 컴파일러를 사용하여 속도를 향상시킵니다.
C++ 바인딩:
Node.js는 C++로 작성된 일부 코드와 V8 엔진을 연결하는 C++ 바인딩을 사용합니다.
이를 통해 JavaScript 코드와 C++ 코드 간의 상호 작용이 가능합니다.
Node.js의 내부 구성은 이러한 요소들이 함께 작동하여 비동기 및 이벤트 기반의 런타임 환경을 제공합니다.
출처
https://medium.com/@vdongbin/node-js-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC-single-thread-event-driven-non-blocking-i-o-event-loop-ce97e58a8e21
https://coding-lks.tistory.com/174
https://medium.com/@gemma.croad/understanding-the-javascript-runtime-environment-4dd8f52f6fca