Node.js는 자바스크립트 실행환경이다.
크롬과 사파리 같은 브라우저도 자바스크립트를 실행한다.
따라서 자바스크립트는 브라우저와 Node.js 환경에서 모두에서 실행이 가능하다. 일반적으로 브라우저에서 동작하는 코드는 Node.js 환경에서도 동작한다.
그럼 이 둘의 차이점은 무엇일까?
브라우저는 HTML, CSS, JS를 실행하여 웹 페이지를 사용자 화면에 렌더링 하는 것이 주목적이지만, Node.js는 서버 개발 환경을 제공하는 것이 주목적이다.
따라서 브라우저와 Node.js 모두 자바스크립트의 코어인 ECMAScript를 실행할 수 있지만 브라우저와 Node.js에서 ECMAScript 이외에 추가적으로 제공하는 기능(기타 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/
require()
로 모듈을 불러오지만import
를 사용한다는 이야기이다.참고