-
node.js 환경 vs 브라우저 환경CS 2024. 1. 10. 19:08
node.js와 브라우저는 둘 다 자바스크립트 엔진을 내장하고 있어서 자바스크립트라는 프로그래밍 언어를 기반으로 실행된다. 하지만 두 가지 실행환경의 존재 목적과 제공하는 기능의 차이가 있다.
여기서 자바스크립트 엔진이란, 자바스크립트 코드를 실행하는 프로그램 또는 인터프리터를 칭하는데, 크롬의 경우 V8 엔진, 파이어폭스는 스파이더몽키 등이 있다.
node.js 환경
서버 개발 환경을 제공하는 것이 주된 목적
- JavaScript 엔진: C++로 작성된 구글 크롬의 자바스크립트 엔진, 이를 통해서 JavaScript 코드 실행
- 이벤트 루프: node.js는 이벤트 기반 방식으로 동작하여 이벤트 처리를 위해 대기하고 있는 이벤트를 실행하는 역할
- 네트워크: 네트워크 프로그래밍을 위한 모듈을 제공하는데, 이를 통해 HTTP 서버를 만들거나, TCP 서버를 만들어 클라이언트와 통신
- 모듈 시스템: CommonJS 모듈 시스템을 지원하여 코드를 모듈화하고, 필요한 모듈을 가져와서 사용 가능
브라우저 환경
HTML, CSS, JavaScript를 실행하여 웹 페이지를 화면에 띄워주는 목적
브라우저 환경 구성 요소
- 웹 브라우저: 사용자가 웹 페이지 탐색 및 상호작용하기위해 사용하는 소프트웨어
- HTML, CSS, JavaScript: 웹 페이지의 구조와 스타일링 및 상호작용 담당하는 웹 기술
- DOM: 웹 페이지를 구성하는 요소들을 계층적인 구조로 표현하는 객체 모델
- 웹 서버: 웹 페이지를 서비스하기 위한 백엔드 서버
- HTTP 프로토콜: 웹 브라우저와 웹 서버 간의 통신을 위한 프로토콜
존재 목적의 차이
두 환경 모두 자바스크립트 기반이기에 ECMAScript 실행할 수 있지만, 각 환경에서 자신의 특수한 목적 실현시키기 위해 제공되는 API들은 서로 호환이 되지 않는다.
ECMAScript는 ECMA에서 만든 스크립트이다.
node.js 환경과 브라우저 환경의 차이점
1. 각 환경에서 제공하는 API의 차이
API란 프로그램 간의 연결을 도와주는 하나의 연결 다리로, 개발자가 특정 환경에서 자유롭게 가져다 쓸 수 있는 함수나 객체를 의미한다.
브라우저의 경우에는 사용자에게 웹 페이지를 보여주는 것이 목적이기에 HTML 요소를 선택하고 조작하는 UI 관련 DOM API를 제공하며, 작업 수행을 위해 브라우저는 window/document 객체에 접근할 수 있다.
node.js의 경우에는 주로 서버에서 데이터를 다루는 목적으로 사용되기에 로컬 스토리지에 파일 생성하고 수정하는 파일 시스템 관련 API가 제공된다. 또한, 서버 개발 환경 구성을 위해 파일 시스템 접근이나 보안 관련 API를 지원받아 사용할 수도 있다.
2. 자바스크립트 엔진의 차이
실행 환경 JS 엔진 node.js V8 chrome FireFox SpiderMonkey Edge V8 + Chakra - 스파이더몽키(SpiderMonkey): 최초의 자바스크립트 엔진으로 넷스케이프 네비게이터에서 지원
- V8: c++로 작성된 구글이 개발한 오픈 소스 엔진
- 웹킷: 사파리용으로 애플이 개발한 오픈 소스 엔진
- 차크라(Chakra): 마이크로소프트에서 개발한 엔진
3. 환경 제어 가능 여부
node.js 브라우저 NVM 사용해서 사용자가 사용할 node.js 버전 쉽게 선택 가능 방문자가 브라우저 환경 제어를 능동적으로 선택 불가 버전 바꾸기 위해서는 업데이트 또는
재설치를 통해서 버전 변경 가능4. 모듈 키워드의 차이
node.js 브라우저 CommonJS 모듈 시스템 사용해서
require() 키워드로 모듈 불러서 사용ES 모듈 표준을 사용하기에
import 키워드로 모듈 불러서 사용즉, node.js는 서버 측 개발에 적합한 환경이고 브라우저 환경은 클라이언트 측 개발에 적합한 환경임을 알 수 있다.
'CS' 카테고리의 다른 글
JWT(JSON Web Token)? (0) 2024.05.11 OAuth란? (0) 2024.05.11 Vue vs React (프레임워크 vs 라이브러리) (0) 2024.01.09 REST API & RESTFUL API (1) 2024.01.07 세션과 쿠키, 그리고 웹 스토리지 (1) 2024.01.07