Node.js란 v8엔진으로 만들어진 자바스크립트 런타임이다.
v8: 자바스크립트 컴파일러로 써 자바스크립트를 네이티브 머신코드로 컴파일 해준다
런타임: 프로그램이 구동되는 환경
즉 Node.js 란 자바스크립트를 컴파일 해주는 엔진으로 빌드 된 자바스크립트가 구동중인 환경이다.
node.js는 Non-blocking I/O 와 단일 스레드 이벤트 루프를 통한 높은 Request처리 성능을 가지고 있다. 데이터베이스로 부터 대량의 데이터를 취득할 때 표시가 지연되는 현상이 발생한다. 이럴 때 noed.js는 Non-blocking I/O가 가능하기 때문에 좋은 성능을 가지고 있다
Node.js모듈은 http서버 모듈을 내장하고 있어서 아파치와 같은 별도의 웹서버를 설치할 필요가 없다.
// app.js
const http = require('http'); // 1
http.createServer((request, response) => { // 2
response.statusCode = 200;
response.setHeader('Content-Type', 'text/plain');
response.end('Hello World');
}).listen(3000); // 3
console.log('Server running at http://127.0.0.1:3000/');
자바스크립트의 패키지 매니저이다 Node.js에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할
전역으로 패키지를 설치하면 전역에서 참조할 수 있다 모든 프로젝트가 공통 사용하는 패키지는 지역으로 설치하지 않고 전역에 설치한다.
# 지역 설치
$ npm install <package>
# 전역 설치
$ npm install -g <package>
node.js프로젝트에서는 많은 패키지를 사용하게 되고 패키지의 버전도 빈번하게 업데이트 되므로 프로젝트가 의존하고 있는 패키지를 일괄 관리할 필요가 없다 npm 은 package.json파일을 통해서 프로젝트 정보와 패키지 의존성을 관리한다. package.json파일을 생성하기 위해서는 npm init 명령어를 실행한다.
npm init -y
* y를 쓰게 되면 init시 기본값으로 파일을 생성한다.
-- save 명령어와 같이 사용해서 패키지를 설치하면 package.json의 dependencies에 설치된 패키지 이름과 버전이 기록된다.
-- save -dev의 경우 devDependencies에 포함시킨다.