예전에 node.js를 처음 다룰 때,
document.getElementById()나 XMLHttpRequest가 왜 안되지... 하면서 헤매곤 했었다.
반대로 브라우저 환경에서 __dirname 등이 안 먹어서 어리둥절 했었다.
이는 자바스크립트는 실행환경에 따라 제공되는 API가 다르기 때문이다.
# 자바스크립트 실행 환경
: 자바스크립트라고 하면 아래의 4가지가 연상된다.
1) ECMA Script의 문법 기준을 따르는 프로그래밍 언어
: 변수, 객체, if문, for문 등
2) 브라우저 전용 Web API
: BOM, DOM, XMLHttpRequest 등
3) Node.js API(키워드, 객체, 모듈 등)
: __dirname, process, path, fs 등
4) 기타 라이브러리 API
: JQuery, express 등
자바스크립트는 기본적으로 ECMAScript 문법을 따르는 프로그래밍 언어이다.
이 문법에 따라 변수나 객체를 생성하고, if문이나 for문으로 흐름을 제어한다.
따라서 어느 환경에서나 이 문법에 따라 자바스크립트 프로그래밍이 가능하다.
단, 실행환경에 따라 제공되는 API가 다르다.
브라우저에서는 HTML요소 조작 및 AJAX를 위한 "브라우저 전용 Web API"가 제공된다.
BOM, DOM, XMLHttpRequest 등은 브라우저 환경에서만 작동한다.
Node.js 에서는 제공되지 않는 옵션이다.
node.js 환경에서는 파일/운영 시스템 등을 컨트롤하기 위한 "노드 전용 API"가 제공된다.
__dirname, process, path, fs 등은 Node.js 환경에서만 작동한다.
브라우저 환경에서는 제공되지 않는 옵션이다.
또한 추가적인 설치 등을 통해
브라우저 환경에서는 JQuery 라이브러리 등을 사용할 수 있고,
Node.js 환경에서는 express 모듈 등을 사용할 수 있다.
* 결론
ECMAScript 기반의 자바스크립트 언어는 거의 대부분의 환경에서 작동하지만,
document.getElementById() 등의 WebAPI는 브라우저에서만 작동하며,
_dirname, porcess, fs, path 등의 node.js 키워드/객체/모듈은 node.js 환경에서만 작동한다.
'개발(Development) > JS(자바스크립트)' 카테고리의 다른 글
[자바스크립트] 반복문 총정리: for in, for of, forEach 등 (0) | 2020.12.12 |
---|---|
[자바스크립트] 대소/동등/일치 비교 연산자와 Object.is() (2) | 2020.12.11 |
[자바스크립트] 문자열 여러번 반복 생성 방법 2가지 (0) | 2020.12.04 |
[자바스크립트] 논리연산자(&&, ||) 단축평가 (2) | 2020.10.15 |
[자바스크립트] 변수 선언 방식 차이: var / let / const (4) | 2020.10.14 |
댓글