Node.js와 웹 브라우저의 차이점

Creating the dots·2022년 1월 7일
0

CS

목록 보기
9/19
post-custom-banner

Nodejs와 웹 브라우저는 모두 자바스크립트의 런타임(실행환경)이자 자바스크립트 언어를 사용한다 점에서 공통점을 갖지만, 사용경험을 다르게 만드는 다음과 같은 주요 차이점이 있다.

환경에 따라 다른 API

브라우저는 DOM과 Cookies와 같은 Web Platform Api과 상호작용할 수 있지만, Nodejs에는 그러한 것이 존재하지 않는다. 또한 Node.js에서는 브라우저에서만 제공하는 document, window 등의 객체와 alert 등을 사용할 수 없다.

직접 경험한 예로, Node.js 환경에서 alert 함수를 호출했을때, alert is not defined라는 ReferenceError가 발생했다. 이는 alert는 브라우저에서 제공하는 Web api이기 때문에, 브라우저 환경에서만 사용할 수 있다.

반면, Node.js에서만 모듈을 통해 사용가능한 API들이 있다. 예를 들면, fs 모듈은 file과 관련된 다양한 기능을 제공하는데, 파일 읽기와 쓰기 등 파일과 관련된 전반적인 작업을 처리할 수 있다.

환경 제어 여부

Node.js를 사용해 만든 애플리케이션을 만들때, nvm install --lts 혹은 nvm install [특정 버전] 등의 명령어로 특정 버전을 선택할 수 있다. 여기서 LTS란, Long Term Suppor로 지원기간이 긴 버전을 뜻한다. 반면, 브라우저를 사용할때, 방문자는 어떤 버전의 브라우저를 사용할 것인지 선택할 수 없다. 즉, Node.js로 애플리케이션을 만들때, ES6,7,8,9 자바스크립트 문법을 사용할 수 있지만, 브라우저는 업데이트가 느린 편이므로 새로운 문법이 적용되지 않거나 예전 버전만 지원하는 경우가 있다. 단, 이럴 경우에는 Babel을 사용해 구 버전의 브라우저가 ES6+와 호환되도록 변환할 수 있다. 하지만, Node.js에서는 이러한 과정이 필요하지 않다.

모듈 키워드 차이

Node.js에서는 모듈을 사용할때, CommonJS module system을 사용하지만, 브라우저에서는 ES Module standard를 사용한다. 예를들면, Node.js에서는 모듈을 가져올때에는require()를 사용하고 내보낼때에는 exports, module.exports를 사용한다. 브라우저에서는 importexport, export default를 사용한다.

reference

profile
어제보다 나은 오늘을 만드는 중
post-custom-banner

0개의 댓글