Node?
Node.js는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임.
JS 런타임 = JS 실행기 = 서버 역할 수행 => 서버X
- 자바스크립트는 웹브라우저에서만 실행되는 언어
- 노트를 통해 컴퓨터에서도 자바스크립트가 실행될 수 있게 한다.
- 서버
- 클라이언트의 요청에 응답하는 컴퓨터나 프로그램
- 노트의 장점
- JS기반 => 하나의 언어로 웹사이트를 개발할 수 있어 생산성 굳
패키지 매니저
npm
- node package manager
- 패키지 매니징한다는 건
패키지를 설치 또는 버전관리
를 할 수 있다는 것
- 외부 라이브러리가 필요하면 소스코드를 우리의 프로젝트 안에 넣고 필요한 것은
import
해서 사용해야 한다. 라이브러리 패키지들을 관리할 수 있게 도와주는 게 npm
npx
- 원하는 라이브러리 실행할 수 있게 도와주는 것, 즉 npm은 설치, 업데이트라면 npx는 원하는 패키지를 실행할 수 있도록 도와주는 툴
nvm
Node Version
manager
- 협업 또는 다양한 프로젝트를 동시에 진행할 때 다양한 라이브러리/프레임워크/개발툴의 버전 호환 문제 해결 가능
- 컴퓨터에 다양한 버전의 Node.js를 설치할 수 있게 해줌
- default 버전을 설정 or 설치한 버전들의 전체 리스트를 확인 or 필요 없는 버전 삭제 등등, 즉 버전 관리가 쉬워진다!
yarn
- 페이스북에서 만든 패키지 매니저
npm
보다 빠르고 효율적인 캐시 시스템 + 부가 기능 제공
package.json
- 설치한 패키지의 버전 관리를 위한
버전 기록용
파일
- 현재 프로젝트에 대한 정보와 사용중인 패키징에 대한 정보를 담은 파일
- 같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해 두어야 함
- 동일한 버전을 설치하지 않으면 무조건 문제가 생길 수 있음
- 노드 프로젝트를 시작하기 전 폴더 내부에 package.json을 만들고 시작해야 함
yarn init
yarn install
-> package.json에 기록된 노드 모듈들을 설치해줌
노드 실행 및 실습
- 노드 REPL :
node
- 노드 프로젝트 시작 :
yarn init
- 노드 프로젝트 바로 시작 :
yarn init -y
- 노드 파일 실행 :
node 파일명
- 노드 패키지 설치 :
yarn add 패키지명
+ 삭제 : yarn remove 패키지명
- 노드 개발용 패키지 설치 : yarn add -D 패키지명
- 노드 package.json에 작성된 패키지 전체 설치 :
yarn install
Express / Nodemon
Express
노드 위에서 작동
- Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크
- 사용이 편리해 노드에서 가장 보편적으로 사용되는 프레임워크 중 하나
- node_modules
- express가 의존하는 패키지들
- 의존관계가 복잡하기 때문에 package.json이 필요
- package.json만 있으면 그대로 설치(yarn, npm)하면 되기 때문에 node_modules는 커밋하지 않고 보관할 필요도 없음
Nodemon
node monitor, 개발을 편리성을 높여주는 모듈.
- 이 확장 모듈을 이용하여 노드가 실행하는 파일이 속한 디렉토리를 감시하고 있다가 개발중인 노드 애플리케이션의 소스 코드를 수정할 때마다 자동으로 노드 애플리케이션을 재시작하여 수정 때마다 매번 노드 명령어를 통해 새로 실행할 필요가 없음! 더 편리함!
그래서 뭐 쓸건데!

처음에는 Express를 사용하려 했지만 Bolt를 사용하기로 결정
Bolt가 뭐에요?
Bolt : Slack 앱을 위한 기본 프레임워크
Bolt는 Javascript, Python 및 Java에서 사용할 수 있는 Slack 앱을 구축할 수 있는 프레임워크다.
Bolt는 앱의 기능에 집중할 수 있도록 많은 기본 설정을 처리하며 기본적으로 제공되는 Bolt에는 다음이 포함된다.
- 앱을 실행할 기본 웹 서버
- OAuth의 모든 기능에 대한 인증 및 설치 처리
- 모든 Slack API 및 앱 기능을 위한 간소화된 인터페이스
- 자동 토큰 유효성 검사, 재시도 및 비율 제한 논리
Bolt에는 또한 유형 지원이 내장되어 있으므로 코드 편집기에서 바로 더 많은 작업을 수행할 수 있다!
Bolt를 Slackbot 개발에 어떻게 사용할까요>^0^