싱글 스레드인 노드가 CPU코어를 모두 사용할 수 있게 해주는 모듈
포트를 공유하는 노드 프로세스를 여러 개 둘 수도 있어 요청이 많이 들어왔을 때 병렬로 실행된 서버의 개수만큼 요청을 분산시킬 수 있다.
하지만 세션활용이 힘들다.
서버 프로세스 외부의 공간을 활용해야 함 ( ex : Redis..)
--save
dependencies에 패키지 이름을 추가하는 옵션, npm@5부터는 기본 옵션
-dev (-D)
실제 배포 시에는 사용하지 않고 개발 중에만 사용하는 패키지
--global (-g)
현재 폴더의 node_modules에 설치하지 않고 npm이 설치된 폴더를 사용,
npm path는 환경변수 설정을 하여 활용
node_modules를 삭제해도 package.json에 의존성 정보를 참조하면 npm install
로 다시 설치할 수 있다.
(버전 관리를 할 때 node_modules는 제외시키자.)
노드 패키지는 항상 3자리로 이루어 진다.(SemVer, Semantic Versioning)
첫 번째 자리 : major 버전, 0이면 초기 개발, 1부터 정식 버전(하위 호환이 안 될 정도로 패키지 내용이 수정된 경우)
두 번째 자리 : minor 버전, 하위 호환이 되는 기능 업데이트 시에만 올린다. (1.5.0 -> 1.6.0, 아무 문제가 없어야 한다.)
세 번째 자리 : patch 버전, 새로운 기능 추가가 아니라 기존 기능 문제가 있어 수정한 버전
^ : minor 버전까지만 설치 또는 업데이트, 'npm i express@^1.1.1'로 설치하면 '1.1.1' <= 버전 < '2.0.0' 반경으로만설치 됩니다.
~ : patch버전까지만 설치 또는 업데이트
"<, >, >=, ="와 같은 부등호도 존재하며 의미와 동일하게 사용
npm i express@>1.1.1
을 사용하면 '1.1.1'보다 높은 버전만 설치된다.
@latest도 존재하며 항상 최신 버전의 패키지만 설치
npm i express@latest or npm i express@x
npm outdated : 새로운 버전 확인
npm search : npm 패키지 검색
npm info : 패키지 세부 정보
npm adduser : npm 로그인 (패키지 배포)
npm whoami : 로그인 사용자 정보 확인
npm logout : 로그아웃
다른 여러가지 커맨드 존재
익스프레스의 핵심, 요청과 응답 중간에 위치하여 미들웨어라 부름
주의할 점은 next()를 포출해야 다음 미들웨어로 넘어감
Spring Framework을 사용할 때 주입받는 혹은 기본 라이브러리로 채택한 objectMapper, Jackson, logLibrary같은 것을 말하는 것 같음
next()?
인자가 없다면 다음 미들웨어
route를 넣으면 다음 라우터,
error를 넣으면 바로 에러 핸들러로 이동