Node.js와 브라우저의 차이

정관우·2021년 7월 5일
3
post-thumbnail

Node.js와 브라우저

Node.js와 브라우저 둘 다 자바스크립트 엔진을 내장하고 있기 때문에, 자바스크립트라는 프로그래밍 언어를 기반으로 실행된다. 하지만, 이 두 가지 실행환경은 존재 목적이 매우 다르다.

존재 목적의 차이

브라우저는 HTML, CSS, 자바스크립트를 실행하여 웹 페이지를 화면에 띄워주는게 목적이지만, Node.js는 서버 개발 환경을 제공하는 것이 목적이다. 기본적으로, 두 환경 모두 자바스크립트 기반이기 때문에 ECMAScript를 실행할 수는 있지만, 각 환경에서 자신의 특수한 목적을 실현시키기 위해 제공되는 API들은 서로 호환이 되지 않는다.

차이점

1. 각 환경에서 제공하는 API의 차이

API (Application Programming Interface)
어떤 플랫폼이나 실행 환경 등에서 제공하는 인터페이스.
즉, 개발자가 특정 환경에서 자유롭게 가져다 쓸 수 있는 함수나 객체 등을 의미한다.

앞서 언급한 듯이, 브라우저와 Node.js 모두 자바스크립트를 사용하더라도 어느 환경에서 개발하는 지에 따라 사용할 수 있는 API가 다르다.

브라우저의 경우, 사용자에게 웹 페이지를 보여주는 것이 목적이기 때문에 HTML 요소를 선택하고 조작하는 DOM API를 제공한다. 또한, 이런 작업을 수행하기 위해서 브라우저는 window / document 객체에 접근할 수 있다.

이와 달리, Node.js는 주로 서버에서 데이터를 다루는 목적으로 사용되기 때문에 로컬 스토리지에 파일을 생성하고 수정하는 File 시스템 관련 API가 제공된다. 이런 작업을 수행하기 위해서 Node.js는 브라우저보다 컴퓨터의 깊숙한 곳까지 제어할 수 있다. 브라우저는 사용자 컴퓨터에서 동작하기 때문에, 브라우저를 통해 사용자의 컴퓨터에 있는 파일들을 조작할 수 있다면 보안적으로 매우 위험하기 때문에 브라우저 환경에서는 이러한 동작을 하지 않는다.

각각 브라우저와 Node.js의 모든 API는 다음 주소로 확인해볼 수 있다.

브라우저 : https://developer.mozilla.org/ko/docs/Web/API
Node.js : https://nodejs.org/docs/latest/api/

2. 자바스크립트 엔진의 차이

Node.js와 크롬 브라우저는 공통적으로 V8 자바스크립트 엔진을 사용하고 있다.
브라우저마다 사용하는 자바스크립트 엔진이 다르다.

실행 환경자바스크립트 엔진
Node.js + ChromeV8
FireFoxSpiderMonkey
EdgeV8 + Chakra (이전 버전)

3. 환경 제어 가능 여부

Node.js에서는 사용자가 앱에서 어떤 버전의 Node.js 버전을 사용할 것인지 선택이 가능하다. 그러나, 브라우저 환경에서는 방문자가 어떤 브라우저를 사용할 것인지 선택할 수 없다. 자바스크립트는 빠르게 발전하는데 비해, 브라우저 업그레이드는 뒤쳐질 때가 있어 종종 문제가 발생하기도 한다. Babel이라는 자바스크립트 컴파일러를 통해 이런 문제를 해결할 수 있다. Node.js는 버전 선택이 가능하여 이런 문제에서 자유롭다.

4. 모듈 키워드의 차이

Node.js에서 CommonJS 모듈 시스템을 사용하는 반면, 브라우저는 ES 모듈 표준을 사용하고 있다. 즉, Node.js에서는 require()를, 브라우저에서는 import를 이용하여 다른 파일의 코드를 불러올 수 있다.

참고자료
node.js와 브라우저의 차이 - 온라인 코딩 스쿨 코드잇
자바스크립트 개발 환경과 실행 방법 - Poiema Web
Node.js와 브라우저의 차이점 (번역) - 휘

profile
작지만 꾸준하게 성장하는 개발자🌳

0개의 댓글