노드

노드의 정의

포칼이 2023. 4. 11. 11:11

공식 홈페이지의 설명

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

노드는 흔히 말해 서버라고 알고 있는 사람들이 많은데 노드는 엄밀히 말해 런타임이다. 

*런타임이란 정말 간단히 말해 실행기 라고 생각하면 된다.

 

노드는

  • 서버의 역할도 수행할 수 있는 자바스크립트 런타임.
  • 노드로 자바스크립트로 작성된 서버를 실행 할 수 있음.
  • 서버 실행을 위해 필요한 http/https/http2 모듈을 제공한다.

자바스크립트라는 언어는 가장 많이 쓰이는 언어 중에 하나이다.

자바스크립트는 html이나 브라우저에 종속되어 있다.

하지만 Node.js가 생긴 뒤로는 자바스크립트를 브라우저 없이도 실행할 수 있고 html이 없어도 실행할 수 있게 되었다.

(물론 노드가 없었을 때에도 있었지만 다 성과가 좋지 않았다)

실무에 쓰일 정도로 성능이 좋은 Node의 발견으로 인해서 자바스크립트가 html이나 브라우저의 종속에서 벗어날 수 있게 됐다.

 

이 의미는 무엇이냐?

  • 자바스크립트가 이제는 앱도 만들 수 있다.
  • 데스크탑 프로그램도 만들 수 있다. 
  • 게임도 만들 수 있다.

즉, 자바스크립트가 이제는 다양한 역할에서 쓰일 수 있다.

 

런타임

특정 언어로 만든 프로그램들을 실행할 수 있게 해주는 가상 머신 (크롬의 V8엔진 사용)의 상태

노드는 자바스크립트로 만든 프로그램들을 실행할 수 있게 해준다. 

 

내부구조

노드는 V8과 libuv를 내부적으로 포함한다.

  • V8 엔진 : 오픈소스 자바스크립트 엔진으로 속도 문제를 개선했다.
  • libuv : 노드의 특성인 이벤트 기반, 논블로킹 I/O 모델을 구현한 라이브러리이다.

노드의 내부 구조는 다음과 같다