[Udemy] Node.js 강의 정리(1)

elsa ❆·2021년 2월 2일
0
post-thumbnail

현업에서 Node.js 사용 경험이 있지만 좀 더 공부해보고 싶어서 Udemy에서 The Complete Node.js Developer Course 강의를 결제했다. 시간이 날 때 찬찬히 듣고 있다. 단순히 강의만 들으면 남는게 없을 것 같아 도움되는 내용들을 정리해 기록으로 남기려 한다.

Node.js란?


공식 홈페이지 설명에 나와있는 그대로이다. Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다. 프로그래밍 언어가 아니라, 여러 툴과 라이브러리 환경을 제공하는 런타임이다.

V8 엔진이란?

웹 브라우저를 만드는데 기반을 제공하는 오픈 소스 자바스크립트 엔진. 구글 크롬 브라우와 안드로이드 브라우저에 탑재되어 있다. 자바스크립트를 머신 코드로 변환해 실행할 수 있게끔 하는 역할을 한다. c++로 작성되어 있기에, c++를 작성할 수 있으면 v8 엔진을 c++ 어플리케이션에 넣어 자바스크립트를 실행시킬 수 있다.


크롬이 자바스크립트를 직접 실행하지 못하고 v8 엔진한테 맡기는 것처럼, node js도 v8엔진에게 자바스크립트 실행을 맡긴다. v8엔진이 c++로 작성되어있고, chrome과 노드는 엔진과 소통하기 위해 일부 c++ 언어로 작성된 binding 연결이 형성되어있기 때문에, chrome에서 자바스크립트의 일부가 아닌 DOM을 자바스크립트로 조종할 수 있고, 자바스크립트는 파일 시스템의 일부가 아니지만 노드를 통해 파일 시스템과 상호작용할 수 있다.

chrome이 v8엔진에게 자바스크립트를 넘기는게 아니라 자바스크립트와 연관된 c++ 바인딩을 넘기기 때문에 chrome의 작성된 코드 중 c++ 언어가 존재하는 것이다.

자바스크립트에서 파일을 불러오는 코드가 fs.readFile 이지만 실제로 자바스크립트는 파일 시스템에 대해 모른다. 해당 코드가 v8 엔진에게 전해지면 c++ 바인딩을 통해 파일 시스템에 대해 알고 있는 c++언어가 실제로 작동되는 것이다.

왜 Node.js를 사용해야하는가?

Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

I/O는 input과 output을 말하며 파일 시스템에서 데이터를 읽어오는 것, 외부 서버와 커뮤니케이션, 데이터베이스를 생성하고 데이터를 가져오는 것을 예로 들 수 있다.

Non-Blocking

요청한 일이 종료될 때까지 다른 일을 할 수 있다. 브라우저에서 입출력을 하는 동안 다른 일을 할 수 있는 것처럼 Node.js도 가능하다.

Non-Blocking 과 Blocking 차이

profile
0과 1로 멋있는 결과를 내는 직업을 업으로 삼고 있습니다.

0개의 댓글