Nodejs가 뭐지?

Jongman Seo·2020년 3월 6일
0

온라인 강의를 듣고 있었는데, nodejs를 설치하라는 당연한 가이드가 나온다. 입사할 때 설치해서 계속 쓰고 있던 거라 이제 난 뉴비는 아니구나 하고 넘어가려고 하는데, 문득 이런 생각이 든다.

nodejs를 왜 깔아야 하지?

문득 .js 로 끝나는 파일을 쳐다보면서 이런 의문이 들었다.

내가 보고 있는 건 javascript인데, nodejs는 뭐지?
nodejs를 공부한다는 건 어떤 의미인가?

애초에 nodejs에 풍덩 빠진 채로 시작을 했으니, nodejs가 정작 왜 필요한지, nodejs가 없으면 어떻게 되는 건지 모르고 있었던 거다. 당장 nextjs도 스터디 리스트에 추가했다. 이런 비교군을 공부하게 되면 확실히 개념을 익히리라.

nodejs가 없으면 지금까지 내가 구현한 것들을 어떤 방식으로 구현할 수 있었을까? 얼마나 불편할까? 이런 것에 대한 감이 하나도 없는 상태이다. 최소한의 정리를 나름 해보려고 한다.

정의부터 시작해보자.

nodejs: JavaScript runtime built on Chrome's V8 JavaScript engine 라고 한다.

  • JavaScript engine은 안다. 단순한 텍스트 쪼가리를 구동시켜주는 인터프리터이다. 이를 똑같이 쓰는 크롬 브라우저 에서 console.log를 타이핑하면 로그를 출력해준다.
  • 런타임 환경이다. 즉 이 엔진을 사용해서 node run.js 를 타이핑하면 자바스크립트 파일을 실행시켜준다.

브라우저만 있으면 안되나? nodejs가 없으면 어떻게 되는데?

nodejs의 목적은 네트워크 앱을 위한 것이라고 한다. 같은 목적으로 python에도 트위스티드라는 것이 있다고 한다.

온라인 javascript editor에 nodejs에서 동작하는 파일을 구동시켜보았다. require부터 이해하지 못한다.

  • require는 commonjs라고 한다.
    • commonjs: 웹 브라우저 밖의 자바스크립트를 위한 모듈 생태계의 규칙을 설립하기 위한 프로젝트. 브라우저에서는 무언가 한계가 있으니 나가고 싶어 했을 것이고, 이 때 공통 규약을 만드는 프로젝트로 보인다.
  • require의 ('http') 도 모를 것이다.
    • nodejs가 제공하는 라이브러리에 가깝다고 생각된다.

async await은 nodejs가 필요없는 자바스크립트이다. 네트워크 앱을 위한 것이고, 웹을 위한 비동기 처리를 위한 기능이라고 생각했는데, javascript 영역이다. 적어도 https://developer.mozilla.org/en-US/docs/Web/JavaScript 에 나오는 부분을 학습할 때 nodejs를 공부한다 라고 말하는 것은 옳지 못한 표현인 것 같다.

왜 nodejs를 쓰나?

  • 기본적으로 제공하는 네트워크 앱용 라이브러리들. (http, process, ...)
    - 나는 지금 당장도 nodejs가 없이 로컬에 서버 구동하는 방법을 모른다.
  • npm을 통한 네트워크 앱용 라이브러리 확장
  • 모듈화(require) 로 앱 building을 쉽게 하기 위해.

nodejs javascript difference
nodejs browser difference
이런 형태로 검색해보니 조금 더 정리가 되는 듯 하다.

내가 듣고 있는 graphQL 강의에서 nodejs를 설치하라는 것은, graphQL이 동작하는 네트워크 앱을 만들기 쉽게 하기 위해서였다.

0개의 댓글