song.log

[Node.js] 동기/비동기, 콜백함수, 패키지 매니저와 PM2 사용법 본문

DevLog/Node.js

[Node.js] 동기/비동기, 콜백함수, 패키지 매니저와 PM2 사용법

SingaKorean 2019. 12. 19. 21:52
반응형

 

 

1. 동기/비동기

 

 

 

fs.readFile(path,option,callback) vs fs.readFileSync(path,option)

 비동기                              동기

동기에서는 Sample.txt를 읽고 나서 C를 실행할 수 있었지만, 비동기의 경우 Sample.txt를 읽는 것과 상관없이 C를 실행했기 때문에 순서가 다르게 나온다.

 

 

2. Callback 함수

자바스크립트에서는 변수에 함수를 할당할 수 있습니다. 따라서 변수에 할당된 함수를 다른 함수의 파라미터로 전달할 수 있습니다. 이렇게 파라미터로 전달된 함수를 다른 함수의 내부에서 호출하는 것이 콜백 함수입니다. 

참조 : Do it! Node.js 프로그래밍 : 실제 서버로 구동 가능한 코드로 배운다! [전면개정판]

 

자바스크립트는 함수의 이름을 미리 정한 상태에서 불러주는 방식과

function a(){
  console.log('A');
}
a();

변수 a에 함수를 받아서 불러주는 방식이 있다.

var a = function (){
  console.log('A');
}
a();
function slowfunc(callback){
  callback();
}

slowfunc(a);

이 때 오랜시간 후에 부를 slowfunc라는 함수에 callback이라는 인자를 받는 함수를 사용한다.

callback이라는 함수는 a함수를 부르고 콘솔에 A가 출력된다. 

 

 

3. 패키지 매니저와 PM2

npm : Node Package Manager

 

오늘 새로 깔아볼 npm

: PM2 - node.js를 하나하나 껐다켰다를 반복할 필요 없이 변화가 생기면 자동으로 껐다 켜주는 역할

https://pm2.keymetrics.io/

 

PM2 - Home

Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance.

pm2.keymetrics.io

npm install pm2 -g 

                      →여기서 -g는 내가 깔고 있는 소프트웨어가 독립된 존재로 컴퓨터 내에서 쓰일 수 있도록 한다를 의미

 

설치 완료 화면

 

pm2 start 20191217/main.js를 실행

pm2 start 

 

 

pm2 monit 를 실행하면 나오는 화면

pm2 monit

 

 

pm2 list로 현재 pm2로 키고 있는 파일 리스트를 확인 가능

pm2 list

 

 

 

pm2 stop 20191217/main.js 로 main.js 파일을 끔

pm2 stop

 

 

pm2 start 20191217/main.js --watch 로 계속해서 main.js의 변화를 감시하도록 명령

pm2 start  --watch

 

 

 

main.js를 수정하고 웹브라우저를 새로고침하면 껐다켜지 않아도 바로 그 변화를 확인할 수 있음

 

pm2 log 를 통해 에러 확인 가능

pm2 log

 

 

 

pm2 kill로 실행한 모든 프로세스를 중지/삭제 

 

pm2 kill

 

 

 

pm2 start main.js --watch --ignore-watch="data/* sessions/*" --no-daemon 로 pm2를 restart없이 사용할 수 있다.

restart되면서 log까지 볼 수 있는 것 

pm2 start main.js --watch --no-daemon

 

restart되지 않으면서 log까지 볼 수 있는 것 - passport/session을 사용할 때 필요 

pm2 start main.js --watch --ignore-watch="data/* sessions/*"  --no-daemon

 

 

참조한 생활코딩 URL :

https://opentutorials.org/module/3549/21132

https://opentutorials.org/module/3549/21133

https://opentutorials.org/module/3549/22110

반응형
Comments