2009년 발표한 Node.js는 크롬 V8 자바스크립트 엔진으로 빌드 된 자바스크립트 런타임 환경이다.

간단히 말해 브라우저에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서 동작시킬 수 있는 자바스크립트 실행 환경이 Node.js다.

모든 브라우저는 자바스크립트를 해석하고 실행할 수 있는 자바스크립트 엔진을 내장하고 있다.

브라우저 뿐만 아니라 Node.js도 자바스크립트 엔진을 내장하고 있다.

따라서 자바스크립트는 브라우저 환경 또는 Node.js 환경에서 실행할 수 있다.

기본적으로 브라우저에서 동작하는 코드는 Node.js 환경에서도 동일하게 동작한다.

그런데 한 가지 주의해야 할 점은 브라우저와 Node.js는 용도가 다르다는 것이다.

브라우저는 HTML, CSS, 자바스크립트를 실행해 웹페이지를 브라우저 화면에 렌더링하는 것이 주된 목적이지만

Node.js는 브라우저 외부에서 자바스크립트 실행 환경을 제공하는 것이 주된 목적이다. 따라서 브라우저와

Node.js 모두 자바스크립트의 코어인 ECMAScript를 실행할 수 있지만 브라우저와 Node.js에서 ECMAScript

이외에 추가로 제공하는 기능은 호환되지 않는다.

예를 들어, 브라우저는 파싱된 HTML 요소를 선택하거나 조작하는 기능의 집합인 DOM API를 기본적으로 제공한다.

하지만 브라우저 외부에서 자바스크립트 개발 환경을 제공하는 것이 주 목적인 Node.js는 DOM API를 제공하지 않는다.

브라우저 외부 환경에서는 HTML 요소를 파싱해서 객체화한 DOMDocument Object Model을 직접 다룰 필요가 없기 때문이다.

반대로 Node.js에서는 파일을 생성하고 수정할 수 있는 파일 시스템을 기본 제공하지만 브라우저는 이를 지원 하지 않는다(Web API인 FileReader 객체를 사용해 사용자가 지정한 파일을 읽어 들이는 것은 가능하다).