개요

Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

NPM

npm (노드 패키지 매니저/Node Package Manager)은 자바스크립트 프로그래밍 언어를 위한 패키지 관리자이다. 자바스크립트 런타임 환경 Node.js의 기본 패키지 관리자이다. 명령 줄 클라이언트(npm), 그리고 공개 패키지와 지불 방식의 개인 패키지의 온라인 데이터베이스(npm 레지스트리)로 이루어져 있다. 이 레지스트리는 클라이언트를 통해 접근되며 사용 가능한 패키지들은 npm 웹사이트를 통해 찾아보고 검색할 수 있다. 패키지 관리자와 레지스트리는 npm사에 의해 관리된다. 설치된 모듈은 require('모듈이름')을 통해 호출하여 사용하게 된다.

예시

npm init : npm 모듈의 dependeny 와 같은 정보를 패키지에 기록한다.
npm install : npn install express --save 와 같은 뜻으로 현재 실행하고 있는 디렉토리'만' 사용하는 모듈을 설치한다.
npm install 모듈이름 -g : 이 컴퓨터 전체를 대상으로 모듈을 설치한다.
npm update : 설치한 패키지를 업데이트 한다.
npm dedupe : 중복된 패키지들을 정리한다.
npm docs : 패키지에 대한 설명을 보여준다. 
npm outdated : 오래된 패키지가 있는지 알려준다.
npm ls : 패키지를 조회한다. 
npm search : npm 저장소에서 패키지를 검색한다. 

유용한 npm 모듈들

  1. jsonwebtoken: 세션이나 기타 토큰발행을 위한 JSON WEB TOKEN(Jwt) 발행을 도와준다.
  2. md5: md5방식의 암호화 모듈
  3. pbkdf2: 보다 진보된 방식의 암호화 모듈
  4. uuid: 랜덤한 문자/숫자 만드는 모듈
  5. winston: 로그를 만드는 모듈

Node.js 의 프레임 워크라이브러리

  1. Express (HTTP 기반의 웹 프레임 워크)
  2. Socket.io (실시간 양뱡향 통신 지향의 프레임 워크)
  3. Mongoose (JSON기반의 noSQL몽고DB에 연결하도록 하는 라이브러리)