본문 바로가기
웹/Node.js

node란? / node.js 설치 / 버전 확인 / node, npm 있는지 확인 / 노드 구조, 시스템

by void pattern 2020. 7. 4.

Node.js?

서버사이드 자바스크립트이며 구글에서 만든 자바스크립트 엔진인 V8을 기반으로 구성된 소프트웨어이다.

Node.js는 자바스크립트의 런타임 으로 자바스크립트 프로그램을 실행할 수 있다. 

 

기존 자바스크립트 프로그램은 인터넷 브라우져 위에서만 실행할 수 있었으나 구글에서  V8 엔진을 사용해 크롬 브라우져를 출시하면서 이야기가 달라졌다. V8엔진은 다른 자바스크립트 엔진보다 속도가 매우 빨랐다. 속도 이슈가 해결되자 라이언달(Ryan Dahl)은 2009년 V8 엔진 기반의 Node 프로젝트를 시작하게 됐다.

 

node 공식 웹사이트에서도 크롬브라우져에 쓰인 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이라고 첫 머리에 나온다.

 

위키백과
Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다.
작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.
내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

 

 

 

node 구조 및 처리 시스템

from : https://medium.com/better-programming/learn-node-js-under-the-hood-37966a20e127

node.js는 V8 엔진 위에서 매우 빠른 속도로 자바스크립트를 해석하고 인식할 수 있는 코드로 변환된다. 또한 libuv라는 라이버리를 사용하는데, V8과 libuv는 c, c++로 구현되어 있고 node는 알아서 v8과 libuv에 연결되므로 node를 사용할 때 c언어나 c++를 몰라도 된다.

libuv 라이브러리는 노드의 주요 특징인 이벤트 기반, 논블로킹 I/O 구조를 가지고 있다. 

 

자바스크립트가 자체적으로 json을 지원해 json 타입의 포맷을 처리할 때 매우 편리하다. 

 

from : https://twitter.com/ImNeutralChaos/status/494959181871316992

node api는 처리할 요청과 비동기 작업을 이벤트 큐에 넣고 싱글 스레드 이벤트 루프를 돌며 요청 완료 시간이 짧은 우선순위가 높은 이벤트를 이벤트 큐에서 꺼내 수행한다.

일부 블로킹 I/O 요청에 대해서는 스레드 풀의 여러 Worker들을 꺼내 별도로 멀티 스레드 방식으로 동작한다.  나머지 이벤트 요청은 실행한 후 콜백함수 이벤트큐로 넘긴다.

이벤트 루프나 다른 스레드에서 콜백 함수가 실행되면 응답을 보내거나 다른 이벤트를 스케쥴링하거나 종료하게 된다.

위와 같은 작업은 모든 이벤트가 처리될 때까지 진행한다.

 

 

node 설치

node.js는 공식 웹사이트에서 다운받을 수 있다.

LTS(Long Term Supported)와 현재(Current)버전이 있다.

쉽게 말해 현재(Current)버전은 최신 기능을 제공하지만 안정적이지 않을 수 있기 때문에 LTS버전을 다운받자.

 

참고로 npm(node package manager)는 node.js를 다운받으면 자동으로 다운된다.

 

 

node와 npm 버전, 존재하는지 확인하는 방법

터미널에 아래와 같이 쳐보면 버전이 나오거나 존재하지 않는다고 나온다.

node 확인하기 : node -v 

npm 확인하기 :  npm -v

 

 

 

npm이란?

node packagea manager의 약어로 node.js에서 사용 가능한 모듈들을 패키지화한 것이다.

' > Node.js' 카테고리의 다른 글

node의 프레임워크 express  (0) 2021.02.03

댓글