💙 들어가며
자바스크립트의 탈 브라우저가 가능하게 한 NodeJS
NodeJS에 대해서 알아보자.
💡 학습내용 정리
#자바스크립트 실행 환경
자바스크립트는 브라우저가 플랫폼이다.
브라우저를 켜지 않으면 실행할 수 없다.
다른 언어들처럼 자바스크립트도 실행환경이 있다면
로컬 시스템을 위한 프로그램을 만들 수 있었을테지만
실행환경이 브라우저였기 때문에 그런 것이 불가능했다.
💡 자바스크립트의 실행기는 브라우저!
다른 언어들은 실행기와 언어가 처음부터 같이 만들어지는데
자바스크립트는 실행기(브라우저)가 먼저 만들어지고
언어가 그 이후에 실행기에 맞춰 만들어져서
브라우저를 켜지 않으면 실행할 수 있는 방법이 없었다.
그런데 구글 크롬에서
V8이라는 새로운 자바스크립트 엔진을 발표했고,
엔진이 브라우저와의 결합력이 낮다는 것에 착안하여
브라우저 없이도 스크립트를 실행할 수 있는 환경을
만들 수 있게 되었다. (탈 브라우저!)
#(번외)자바스크립트의 탈 브라우저
즉, NodeJS는 자바스크립트의 실행환경 겸 플랫폼이다.
(이전에 자바스크립트의 실행환경은 브라우저밖에 없었음)
DOM은 브라우저를 실행할 때만 쓸 수 있어서
NodeJS로는 DOM을 쓰지 못한다.
#NPM 저장소: 자바스크립트를 위한 저장소
언어가 사용할 수 있는 도구(플랫폼 api, 라이브러리 등)와
언어가 결합이 되어야만 프로그램을 만들 수 있다.
언어가 사용할 수 있는게(API) 없다면
언어가 할 수 있는게 없다.
(DOM이 없다면 자스는 쓸 수 있는게... 없다...)
그래서 개발자들은 그런 API들을 공유할 저장소를 마련했다.
이름은 NPM 저장소!
💡 NPM (Node Package Manager) 저장소란?
NPM은 Node.js 패키지 관리자로,
Node.js 애플리케이션을 구축할 때 사용되는
패키지(라이브러리)를 관리하고 설치하는 데 사용된다.
NPM 저장소는 Node.js 패키지 및 모듈을 호스팅하는 중앙 저장소이다.
개발자는 NPM 저장소에서 패키지를 다운로드하고 사용할 수 있다.
NPM 저장소에는 Node.js 패키지 뿐만 아니라
JavaScript와 Node.js를 기반으로 한
다양한 패키지 및 라이브러리가 포함되어 있다.
NPM 저장소는 Node.js 패키지를 호스팅하는 중앙 저장소일 뿐,
Node.js 전용 저장소는 아니다.
NPM을 사용하여 JavaScript 및
Node.js 애플리케이션 개발에 필요한 패키지를
설치하고 관리할 수 있다.
마치 메이븐 저장소가 자바를 위한 저장소라면
NPM은 자바스크립트를 위한 저장소이다.
접속하면 다음과 같이 여러 라이브러리를
확인해 볼 수 있다.
NodeJS가 등장하기 전에는
자바스크립트가 사용할 수 있는
API가 DOM밖에 없었는데 (프론트)
NodeJS가 등장하면서
자바스크립트로 back도 만들 수 있게 되었다.(백)
#NodeJS 설치하고 실행해보기
NodeJS를 설치하고 난 뒤에
cmd를 열어서 node라고 치면
정상적으로 설치되었는지를 알 수 있다.
콘솔에서 bash를 이용해서 해당 폴더 구조를 타고 내려간 뒤에
앞에 명령어 node를 붙이고 파일이름.확장자를 하면 실행시킬 수 있다.
(마치 -javac와 같은 느낌!)
#NodeJS의 기본 구조
프론트 개발자들에게 백을 열어줬고
성능이 좋다고 해서 갑자기 붐을 확 탄 NodeJS
기존에 백엔드 프로그램들은
비동기 실행을 위해서 여러 개의 스레드를 가져야 했다.
하지만 Node.JS를 사용하면 스레드가 1개로 줄어든다.
이벤트 흐름 안에서 다 처리되기 때문
일반 백엔드 비동기 구현방식은
스레드를 스위칭 하는 등 방식이 너무 복잡했다.
자바스크립트 환경에서는
이벤트 스레드 하나에서 다 해결된다.
그러나 아직 공인받은 API가 많이 없기 때문에
볼륨이 큰 프로그램을 만들기에는
부담이 있다는 것은 잘 인지해두자.
#Node API
이제는 브라우저가 가지고 있는 API(DOM 등..)는 못 쓰고
노드가 제공하는 새로운 API를 사용해야 한다.
기본적인 모듈은 그냥 사용할 수 있고
부족한 것들은 MPN에서 다운로드 받아서 사용한다.
💙 마치며
1.
언어는 똑같은데 API가 달라졌다.
DOM은 없고 Node가 제공하는 API들을 사용한다.
이제는 자바스크립트를 통해
백도 구현할 수 있게 되었다!
NodeJS는 자바스크립트의 실행환경 겸 플랫폼이다.