모카스터디/ETC 개발 지식

Node.js란 ?

softmoca__ 2024. 3. 2. 15:45
목차

Node.js란 ?

Node.js is JavaScript runtime built on Chorme's V8 JavaScript engine.

크롬의 V8자바스크립트 엔진이 내장된 자바스크립트 실행 환경.

 

즉, 자바스크립트를 사용할수 있는 실행 환경이다.

 

 

Node.js의 역사

 

 

 

1995

Netscape 브라우저가 JavaScript를 소개했다.

 

2008

Web 2.0 Google이 Chrome 브라우저를 발표했다.

그리고 Chrome 브라우저는 JavaScript 엔진인 V8 엔진을 사용했다.

새 브라우저 Chrome이 출시했을 때 V8엔진 덕분에 JavaScript가 정말 빠르고 성능 좋게 실행할 수 있었다.

 

2009

Ryan Dahl이 Node.js를 만들었다.

 Node.js를 만드는 아이디어는 간단했다. 

브라우저 외부에서 V8 엔진을 사용해서 자바스크립트를 실행할 수 있을까였다.

 

즉, Node.js를 사용하면 브라우저 밖에서도 자바스크립트를 사용할 수 있다.

 

 

runtime(실행환경) 이란?

런타임이란 프로그래밍 언어가 구동되는 환경을 말한다. 

Node.js나 크롬 등의 여러 브라우저들에서 자바스크립트가 구동이 되기에 Node.js나 브라우저들도 자바스크립트 런타임이다. 

Node.js는 프로그래밍 언어도 프레임워크도 아닌 자바스크립트 런타임이다.

또한 Node.js는 자바스크립트 코드를 실행시켜주는 V8엔진과 자바스크립트 코드를 읽는것 이외의 데이터베이스 접근, 파일 읽기 등등의 처리를 하는 libuv를 바인딩 해준다.

 

 

v8이 코드를 해석하고 Node.js APIs들 중 하나의 함수를 호출하고 Node.js 바인딩을 통해서 libuv에 의해서 원하는 작업을 처리하게 한다.

 

libuv

이벤트 루프를 기반으로 하는 비동기 I/O에 대한 지원을 제공하는 다중 플랫폼 C 라이브러리이다.

주로 Node.js에서 사용하도록 개발되었지만 Julia, Luvit, pyuv 등과 같은 다른 도구에서도 사용된다. Node.js는 이 라이브러리를 사용하여 지원되는 모든 플랫폼에서 통합 인터페이스로 I/O 작업을 추상화한다.

 

즉, libuv를 쓰면 각 플랫폼(window, linux) 의 가장 빠른 비동기 IO 인터페이스로 통일된 코드로 돌릴 수 있는 장점이 있다.

이 라이브러리는 파일 시스템, DNS, 네트워크, 파이프, 신호 처리, 폴링 및 스트리밍을 처리하는 메커니즘을 제공한다.

 

 

Node.js REPL

REPL은 Read-Eval(evaluation)-Print- Loop의 약어로 사용자가 특정 코드를 입력하면 그 코드를 평가하고 코드의 실행결과를 출력해주는 것을 반복해주는 환경을 말한다.

 

즉, 명령어를 읽고 평가한 뒤 출력해주는걸 반복 해주는 환경이다.

 

 

 

 

Browser API & Node.js API

모두 사용하는 API로는 대표적으로 console이 있으며 브라우저 API로는  window 가 있고 Node.js API로는 Process가 있다.

 

Node JS는 최신 버전의 자바스크립트 문법 사용 가능하다.

그 이유는 Nodejs는 V8엔진을 사용하며 V8엔진은 최신 ECMAScript 기준으로 계속 업데이트하기 때문이다. 그리고 최신 버전의 Node.js를 사용하면 최신 버전의 자바스크립트 문법도 사용 가능하게 된다.