들어가면서
자바스크립트
자바스크립트는 웹 페이지의 동적인 기능을 추가하기 위해 만들어진 프로그래밍 언어이다.
원래 용도는 브라우저 내에서 프론트엔드 스크립트로 동작하며, 웹 페이지에서 애니메이션, 폼 유효성 검사, 사용자와의 상호작용 등을 구현할 수 있는 정도였다.
자바스크립트는 기본적으로 브라우저에서 실행되며 브라우저마다 자바스크립트 엔진이 존재한다.
예를 들면, Chrome은 V8, Firefox는 SpiderMonkey 엔진을 사용한다.
Node.js
Node.js는 자바스크립트를 브라우저 밖에서도 실행할 수 있게 만들어주는 자바스킓트 런타임 환경이다.
또한, Node.js는 구글의 V8 엔진을 기반으로 하며, 서버 환경에서도 자바스크립트를 사용할 수 있게 해준다.
주로 웹 서버, CLI 도구, 파일 시스템 조작, 네트워크 프로그래밍 등과 같은 백엔드 작업에 사용한다.
더불어, CommonJS 모듈 시스템을 사용하여, require()와 같은 명령어로 모듈을 불러오고 사용할 수 있다.
그리고, 파일 시스템, 네트워크 요청 등의 API를 제공하여 서버 프로그래밍에 유용한 기능을 지원한다.
공통점
언어의 기본적인 문법 | 자바스크립트의 기본적인 문법과 데이터 구조는 브라우저와 Node.js 모두 동일하다. 예를 들면, for문, if문, 객체, 배열, 함수 등을 선언하고 사용하는 방식은 같다.
비동기 프로그래밍 지원 | 자바스크립트의 주요 특징 중 하나인 비동기 프로그래밍을 둘 다 지원한다. 브라우저에서는 비동기 요청과 이벤트 루프를 통해 비동기 작업을 수행하며, Node.js도 콜백함수, Promise, async/await 등을 통해 비동기 프로그래밍을 수행한다.
기반 엔진(V8) | Node.js는 크롬 브라우저에서 사용되는 V8 엔진을 기반으로 하여 자바스크립트를 실행한다. 따라서, 브라우저에서 자바스크립트를 실행하는 것과 Node.js에서 자바스크립트를 실행하는 기본적인 방식은 유사하다.
차이점
실행 환경
자바스크립트는 기본적으로 브라우저에서 동작하며, 웹 페이지에 동적인 기능을 추가하거나 사용자와 상호작용 하는데 주로 사용된다.
반면, Node.js는 브라우저 외부에서 동작하며, 주로 서버 프로그래밍과 파일 시스템 접근, 네트워크 프로그래밍 등브라우저 환경과 무관한작업에 사용된다.
기능과 API
자바스크립트는 브라우저 환경에서 DOM(Document Object Model) 조작, window 객체, document 객체 같은 브라우저 전용 API를 사용한다.
또한, 브라우저 고유 기능인 alert, fetch, localStorage 같은 고유 기능을 제공한다.
반면, Node.js는 브라우저에서 지원하지 않는 파일 시스템(fs), 네트워크(http, net), OS 관련 기능을 제공하는 내장 모듈을 포함하고 있다.
window나 document와 같은 브라우저 전용 객체는 없지만 대신 global 객체가 있으며, console, process 등 다양한 서버 사이드 기능을 지원한다.
모듈 시스템
자바스크립트는 기본적으로 파일마다 스크립트를 분리하여 관리하며, HTML 파일에서 <script> 태그를 통해 각 스크립트를 불러온다.
최신 자바스크립트(ES6+)에서는 import와 export 구문을 통해 모듈화를 지원하며, 이러한 모듈들은 웹팩(Webpack) 같은 도구를 통해 번들링하여 웹 환경에 최적화할 수 있다.
반면, Node.js는 CommonJS 모듈 시스템을 사용하여 require()와 module.exports를 통해 모듈을 가져오고 내보낼 수 있다.
ES6 모듈도 지원하지만, 기본적으로 CommonJS가 표준이었으며, 이는 백엔드 자바스크립트 개발에 적합하다.
패키지 매니저
자바스크립트에서 자바스크립트를 사용할 때는 별도의 패키지 매니저가 필요 없지만, 프론트엔드 프로젝트를 관리할 때는 NPM(Node Package Manager)나 Yarn을 이용하여 외부 라이브러리를 관리하는 것이 일반적이다.
반면, Node.js는 기본적으로 NPM을 통해 패키지를 관리한다. NPM을 사용하면 Node.js에서 제공하는 수 많은 오픈 소스 라이브러리를 쉽게 설치하고 사용할 수 있으며, 서버나 CLI 프로그램에서도 외부 패키지를 쉽게 관리할 수 있다.
성능 및 최적화
자바스크립트는 사용자의 시스템 리소스를 효율적으로 사용해야하므로 메모리와 CPU 사용을 제한하는 방향으로 최적회되어 있다.
또한, 스레드가 하나뿐인 싱글 스레드로 작동하지만, 웹 워커(Web Worker)를 통해 병렬 처리가 가능하도록 보완한다.
반면, Node.js는 서버 프로그래밍에 맞추어 논블로킹 I/O와 이벤트 루프를 활용하여 고성능을 목표로 한다.
Node.js는 싱글 스레드 기반이지만, 서버 환경에서 빠르게 요청을 처리할 수 있도록 최적화 되어 있으며, 필요한 경우 클러스터링을 통해 멀티 스레드 작업도 지원한다.
정리
따라서, 자바스크립트는 원래 브라우저에서 실행되도록 설계된 언어지만, Node.js를 통해 브라우저 외부에서도 실행할 수 있다. Node.js는 서버 프로그래밍, CLI 툴 제작 등 브라우저 외부에서 자바스크립트를 활용할 수 있는 환경을 제공하며, 자바스크립트가 더 넓은 영역에서 사용될 수 있도록 확장해준다.
'Node.js' 카테고리의 다른 글
JS : 달력 만들기(월간 이동, 일정 추가) (0) | 2023.11.20 |
---|