NodeJS와 JavaScript 이해하기

2021. 7. 29. 20:19·IT지식
728x90
반응형

오늘은 Node.js에 대해 알아보고, Javascript와 어떤 차이점이 있는지 알아보려 합니다.

 

다음 질문을 들었을 때 어떤 생각이 먼저 드시나요?

Node.js가 무엇인가?

 

공식적인 문서에서는 다음과 같이 얘기합니다.

 

 

Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임

 

 

음...그런데 JavaScript 런타임은 무엇인지 JavaScript 엔진은 또 뭔지 싶으실 거라 생각합니다.

 

하나씩 차근차근 알아가봅시다!


※목차※
1. Javascript 엔진
2. Runtime(런타임)

3. Node.js의 정의
4. JavaScript와 Node.js의 차이점
5. Node.js를 사용하는 이유


1. JavaScript 엔진

JavaScript 엔진에 대해 먼저 알아봅시다.

​

우리는 보통 자동차나 대중교통을 타고 이동합니다.

이때 모든 차량에는 엔진이 있죠.

이 엔진은 차량에 가해지는 어떤 명령을 해석해서 그걸 실현에 옮기는데요.

​

이 사례를 자바스립트 엔진에 적용해봅시다.

​

우리가 자주 사용하는 모든 브라우저는 자바스크립트 코드로 구성되어 있고,

모든 브라우저는 자바스크립트 코드를 해석하기 위해 자바스크립트 엔진을 갖고 있습니다.

​

즉, 자동차에서의 엔진과 자바스크립트 엔진을 대응시켜 이해하시면 되는데요.

 

JavaScript 엔진의 예시로, Chrome의 V8 엔진, FireFox의 SpiderMonkey, Safari의 Webkit이 있습니다.


2. 런타임

 

런타임이란,

프로그래밍 언어가 구동되는 환경입니다.

​

처음에 이 정의를 들었을 때, 너무 막연한 설명으로 느껴졌습니다.

그래서 좀 풀어 설명을 해보려 해요.

​

우선, JavaScript(앞으로 줄여서 JS라고 부르겠습니다!)가 웹을 개발하는데 사용됨은 알 겁니다.

​

JS가 웹을 개발하는데 사용된다?

​

그러면 Chrome이나 Explorer같은 웹 브라우저에서 작동되어야 하지 않을까요?

​

네, 맞습니다.

​

이때 Chrome, Explorer같이 JS와 같은 프로그래밍 언어가 실행될 수 있는 환경을

우리는 런타임이라 부릅니다.

​

특별히 자바스크립트 언어가 실행되는 환경을 자바스크립트 런타임 이라 부르는 것입니다.

​

이때 JS는 웹 브라우저에서 뿐만 아니라 NodeJS에서도 작동할 수 있는데요.

즉 NodeJS도 JS 런타임이라는 것을 알 수 있습니다!

​

그렇다면, 다시 본론으로 돌아와 봅시다.

​


3. Node.js의 정의

 

그렇다면, 앞서 던졌던 질문을 다시 던져보겠습니다.

NodeJS는 무엇인가?

 

앞서 소개해드렸던 공식적인 문서의 정의도 좋지만

다음과 같이 이해해보는 것을 추천드립니다. 

 

{{Node.js의 정의}}

NodeJS란,
Chrome의 V8엔진을 이용해 브라우저에서 JS를 해석하듯,
Node.js는 서버에서 JS를 동작할 수 있게 하는 환경(플랫폼)이다.

즉, NodeJS는 웹 서버에서 JS가 동작하도록 해주는 환경이다.

 

####웹 서버, 웹 브라우저 관련 개념들은 추후 다루도록 하겠습니다.


4. JavaScript와 NodeJS

 

​지금까지 Node.js에 대해 알아보았습니다.

 

###Javascript

그렇다면,

JS는 웹 서버에서 Node.js 없이 동작을 못할까요?

JS는 어떤 환경에 제한되어 실행이 되는 걸까요?

독립적인 실행은 안되는 걸까요?

 

네, 그렇습니다.

JS는 웹 브라우저에서만 실행이 됩니다.

​

JS는 스크립트 언어여서, 특정한 프로그램 안에서만 동작이 됩니다.

그러니까, Chrome, FireFox, Safari 와 같은 웹 브라우저에서만 실행이 됩니다.

​

또한, JS는 애초에 웹 서버가 아닌 클라이언트 측면의 프로그래밍 언어이기도 합니다.

 

###Node.js

이와 반대로,

​

NodeJS는 독립적인 언어여서, 웹 브라우저 밖에서도 실행이 가능합니다.

쉽게 생각하면, Chrome의 console창이 브라우저 밖으로 나온 거라 생각해도 무방합니다.

​

node가 컴퓨터에 설치되어 있다면,

Window라면 cmd창을, Mac이라면 terminal을 열어보세요!

 

node를 입력하고

1+1을 입력한 뒤,

Enter키를 누르면 2가 나올 겁니다!

 

즉, Node.js는 꼭 브라우저와 같은 실행 환경이 아니더라도 사용이 가능합니다. 

​

그렇다면, NodeJS는 어디에 사용할까요?

​

대부분의 경우, 자바스크립트 런타임의 한 종류인

NodeJS는 ExpressJS 라이브러리를 이용해 웹 서버를 만드는 데 사용됩니다.

​

그렇다면, 웹 서버는 어떻게 만드는 걸까 궁금하실 거라 생각합니다!

아쉽게도, 이 부분은 지금까지의 지식을 바탕으로 쌓아가는 심화 부분이 되기 때문에

이번 포스팅에서는 다루지 않겠습니다.

이미 소개한 내용도 꽤 길어서 잘라 가야 할 것 같네요.

참고로 아래는 기본적인 서버 생성 코드입니다.

var http = require('http');

//..create a server object:
http.createServer(function(request, reponse){
	response.write('hello World'); 	//..write a response to the client
	response.end(); //..end the response
}).listen(8080); 	//..the server object listens on port 8080

5. NodeJS를 사용하는 이유

​

그렇다면, 우리는 NodeJS를 왜 사용하려 할까요?

어떤 이점이 있기에 인기가 있는 것인지 알아봅시다.

​

Node.js 내 API는 비동기식None-Blocking을 따릅니다.

​

즉, API를 실행하고 완료되기까지 기다리지 않고 바로 다음 API를 실행합니다.

만약 예전에 실행한 API가 값을 반환하면, 이벤트 루프가 이를 확인하고 값을 받아옵니다.

​

정리하면,

NodeJS는 단일 쓰레드 모델을 사용하고 이벤트 메커니즘을 통해 서버가 멈추지 않고 반응할 수 있기 때문에 확장성이 큽니다. 또한 Chrome V8 JS엔진을 사용하기 때문에 빠른 코드 실행이 가능하며 버퍼링이 없다는 장점을 갖습니다. 


정리

지금까지 JavaScript와의 비교해 보면서 NodeJS는 무엇이고 어디에 사용되는지 알아보았습니다.

포스팅 경험이 적어 이해가 쉽게 되셨을지 모르겠네요.

제가 잘못 알고 있는 부분이 있다면 알려주세요! 

아직 부족한 점이 많습니다. 함께 공부하고 성장합시다!감사합니다.

 

728x90
반응형
저작자표시 (새창열림)

'IT지식' 카테고리의 다른 글

자료구조 2장 실습문제 풀이  (0) 2021.09.14
'IT지식' 카테고리의 다른 글
  • 자료구조 2장 실습문제 풀이
heeya16
heeya16
개발 공부 냠냠
  • heeya16
    개발자 희야
    heeya16
  • 전체
    오늘
    어제
    • 분류 전체보기 (105)
      • 코딩테스트 (66)
        • 프로그래머스 (38)
        • SWEA (2)
        • BAEKJOON (26)
      • 알고리즘 (7)
      • 자료구조 (19)
      • 프로젝트 (5)
      • 취업 주르륵 (2)
      • 데이터베이스 (0)
      • IT지식 (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1003
    10448
    10773
    10월
    10진수
    11047
    11399
    11403
    11866
    1449
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
heeya16
NodeJS와 JavaScript 이해하기
상단으로

티스토리툴바