[Node] Node.js와 브라우저의 차이

Kim Tae Won·2021년 12월 28일
1
post-thumbnail

Node와 브라우저

Node.js는 자바스크립트 실행환경이다.
크롬과 사파리 같은 브라우저도 자바스크립트를 실행한다.

따라서 자바스크립트는 브라우저와 Node.js 환경에서 모두에서 실행이 가능하다. 일반적으로 브라우저에서 동작하는 코드는 Node.js 환경에서도 동작한다.

그럼 이 둘의 차이점은 무엇일까?

먼저 이 둘은 존재목적에서부터 차이가 크다.

브라우저는 HTML, CSS, JS를 실행하여 웹 페이지를 사용자 화면에 렌더링 하는 것이 주목적이지만, Node.js는 서버 개발 환경을 제공하는 것이 주목적이다.

따라서 브라우저와 Node.js 모두 자바스크립트의 코어인 ECMAScript를 실행할 수 있지만 브라우저와 Node.js에서 ECMAScript 이외에 추가적으로 제공하는 기능(기타 API)은 서로 호환되지 않는다.

차이점

1. API

  • 제공하는 API가 다르다

    • API(Aplication Programming Interface): 어떤 플랫폼이나 실행환경 등에서 제공하는 인터페이스
      • 특정 환경에서 자유롭게 가져다 쓸 수 있는 함수나 객체를 의미한다
  • 브라우저에서 제공하는 API와 Node.js에서 제공하는 API는 똑같이 Javascript를 사용하더라도 다르다.

  • 예를 들어, 노드의 경우 시각적으로 나타낼 필요가 없기 때문에 UI관련 API가 없지만, 브라우저의 경우 시각적으로 표현이 필요하기 때문에 UI 관련 API가 존재한다.

  • 또한 브라우저에서 사용가능한 window, document 객체들은 노드에서는 존재하지 않는다. 즉, DOM, 쿠기와 같은 웹 플랫폼 API들이 노드에서는 호환되지 않는다.

  • 반대로 노드에서만 존해하는 API도 있다. Core 모듈 중 파일 생성, 컴퓨터 정보 확인과 같은 작업은 모두 브라우저에서는 컴퓨터를 조작할 수 있다면 보안적으로 매우 위험하기 때문에, 지원하지 않는 기능들이다. 즉 컴퓨터 제어 API가 노드에는 있지만 브라우저에서는 존재하지 않는다.

  • 이러한 노드의 특징은 컴퓨터의 깊은 부분을 제어할 수 있기 때문에, Electron을 이용해 PC 프로그램 제작도 가능하다

    브라우저와 노드에서 제공하는 API들은 다음 문서에서 확인이 가능하다
    브라우저 : https://developer.mozilla.org/ko/docs/Web/API
    Node.js : https://nodejs.org/docs/latest/api/

2. Javascript Engine

  • Node.js는 구글 Chrome 브라우저에서 사용하는 V8 엔진을 자바스크립트 실행 엔진으로 사용한다.
  • 브라우저는 종류와 버전에 따라 엔진의 종류가 매우 다양하다
    • Firefox : SpiderMonkey
    • Edge : (최신)V8, (이전)Chakra

3. 제어

  • Node.js에서는 우리가 직접 환경을 제어할 수 있다. 즉, 어떤 버전의 Node.js로 실행을 할 지 우리가 결정할 수 있다는 말이다.
  • 하지만 브라우저는 사용자가 어떤 브라우저를 사용할지 선택할 수 없을 뿐더러, 브라우저마다 실행하는 환경이 모두 제한되어 있어, 우리가 직접 이를 컨트롤하지는 못한다.

4. 최신 경향

  • Node.js는 CommonJS 모듈 시스템을 보통 사용하는 반면에, 브라우저는 ES 모듈 표준을 사용하기 시작했다는 것이다.
  • 즉, Nodej.js에서는 require()로 모듈을 불러오지만
  • 브라우저에서는 import를 사용한다는 이야기이다.

참고

profile
꿈이 너무나 큰 평범한 컴공 대딩에서 취업 성공!

0개의 댓글