공홈에 가면 이렇게 써있다
Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임
이게 무슨말이냐면
V8 engine
: 자바스크립트를 기계어로 컴파일해주는 엔진
runtime
: 프로그래밍 언어가 구동되고 있는 환경
다시 말하자면
자바스크립트를 컴파일해주는 엔진으로 빌드된, 자바스크립트가 구동중인 환경
이라고 말할 수 있다.
Node.js는 이벤트 기반 및 논블로킹 I/O 모델인데,
여기서 말하는 이벤트
란, 유저의 버튼 클릭이나 네트워크에 리소스를 요청하는 것처럼 무언가 실행되는 것을 말하고,
논블로킹
은 바로 전에 배웠던 비동기식 실행을 말한다
(다음 함수의 실행이 현재 함수의 종료를 기다리지 않음)
자바스크립트를 컴파일하여 구동하고, 이벤트 기반의 논블로킹 모델이라 속도가 빠르다
그리고 별도의 설치를 하지 않아도 Node.js상에서 사용할 수 있는 모듈들이 있는 데, 이게 아주 유용하게 사용된다.
아래 모듈들은 Node.js에 기본적으로 번들링 된 모듈 중 일부이다.
require('')
방식으로 사용할 수 있다.
번들링되지 않은 모듈은 NPM
으로 다운받으면 된다!
package.json
에는 npm을 활용하기 위한 정보들이 모여있고,
프로젝트 전반에 관한 정보가 모여있다.
package.json
은
script
코드의 정보를 포함하고 있고, 이 패키지 파일을 넘겨주어 다른 사람도 관련 모듈들을 확인하고 설치할 수 있도록 하고, 스크립트를 실행할 수 있도록 한다.
package.json
에 포함된 설정된 script
코드들을 CLI환경에서 실행할 수 있도록 한다
결과물과 관계 없이, 개발에 필요한 dependency의 정보들이다.
devDependencies
를 설치할 때는 반드시 뒤쪽에 --dev
옵션을 포함하여 등록한다.
예시
$ npm install @babel/core --dev
$ npm install @babel/core --save-dev
결과물과 직접 관련된 dependency의 정보들이다.
npm을 사용하여 설치할 때는 반드시 --save
옵션을 포함하여야 한다.
예시
$ yarn add react
$ npm install --save react
왜 save를 해야하는가
우리가 git에서 프로젝트 파일들을 받아 오면 노드 모듈들은 포함되어 있지 않고 npm install
을 하여 package.json
에 있는 dependency를 바탕으로 설치하게 된다.
그런데 Save를 하지 않으면 git에 업로드하고 다른 사람이 내려받았을 때 코드에서는 해당 모듈을 쓰고 있지만 npm install
로는 설치되지 않는 상황이 발생한다. (오류 발생. 팀 프로젝트에서 개쳐맞을수 있음)