TIL_171030 Promise, Node.js
promise
- 비동기식함수의 리턴을 할 수 없어서 생기는 콜백헬, 에러처리 불가능 문제를 해결하기 위한 하나의 방법
- Promise를 사용하면 요청을 취소할수 없다는 단점이 있음
- promise기능의 최신 -> RxJs (Angular)
- promise 자체도 ‘값’을 반환할 순 없지만, ‘약속’을 반환
- 후속코드에 서버가 ‘약속’을 지켰을 경우(fulfilled)의 실행, 못 지켰을 경우(rejected)의 실행을 지정
- promise는 내부 계산을 한 후 ‘상태’를 return
|
|
promise 후속 처리함수 then / catch
1. then
- then 메소드는 두 개의 콜백 함수를 인자로 전달 받음
- 첫번째 함수는 성공(fulfilled) 시 호출되는 함수
- 두번째 함수는 실패(rejected) 시 호출 (일반적으로 throw로 에러처리를 catch문에 위임)
2. catch
fulfilled, rejected 외, 예외 발생 시 호출
또는, 두번째 함수에서 던진 throw구문 잡음
Node.js
- 단일 thread, 모든 API는 비동기처리
- 실무환경에서는 서버에 LTS버전을 설치하도록 (안정)
- 서버 페이지가 변경되고, 이를 적용하려면 재실행 시켜서 확인
- require 문은 동기식이기 떄문에 최상단에 연이어 작성을 추천
npm
- 자바스크립트 패키지 매니저
- Node.js에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할 & 패키지 설치 및 관리를 위한 CLI(Command line interface)를 제공
- npm에서 모듈 검색 가능 (단, status에 다운로드 기록이 작은 것은 되도록 비추)
- 기본 install은 지역 (전역설치 npm install -g ####)
- package.json에 dependencies or devDependencies 유의 (의존성. 배포 or 개발–save-dev)
- npm install 패키지명 –save-dev 하면 -> devDependencies로
- 한사람이 package.json을 만들어두면 그 파일을 가지고 npm install만하면 모든 팀원이 동일한 개발환경을 갖게됨
버전정보
|
|
^caret or ~tilt
- caret] 추후 호환성을 고려해, minor버전 내 최신버전을 다운
- tilt] 패치 버전 내 최신버전을 다운
major - 호환성이 변경했을때
- minor - 기능을 추가
- patch - 버그를 수정
1. exports
- exports 객체에는 값을 할당할 수 X
- 공개할 대상을 exports 객체에 프로퍼티 또는 메소드로 추가
- 추가한 프로퍼티와 메소드가 담긴 객체가 전달된다.
2. module.exports
- module.exports를 많이 씀
- module.exports 객체에 하나의 값(기본자료형, 함수, 객체)만을 할당
- 하나의 값만 들어갈 수 있으나 폴더를 지정할 수도 있음 (이때 해당 index.js파일을 찾게됨)
module.exports 객체에 할당한 값이 전달
12345678910111213141516//폴더 경로/* project/├── app.js└── module/├── index.js├── calc.js└── print.js */const myModule = require('./module');// -> require('./module/index.js')와 같음// module/index.js 내부에는 부르고싶은 모듈들을 작성module.exports = {calc: require('./calc'),print: require('./print')};코어모듈은 경로를 써주지 않아도 됨 (이미 node.js가 암 [eg] http )
- 파일모듈은 경로를 써줘야 함
[npm package]
1. nodemon
- npm install nodemon -g
- 전역으로 설치한것은 package json 으로 안들어옴
-> package.json의 script영역에 “start(임의의명)”: “nodemon app(가동할 js파일)” 기입
-> 이후 nodemon app으로 실행 시, 수정할때마다 서버를 재가동 해야하는 불편함 없이 사용가능
2. body-parser
- npm install body-parser
- 클라이언트가 보낸 페이로드를 리퀘스트 객체에 바디 프로퍼티에 set해줌
|
|
오늘의 느낀점
- 자바스크립트 표준을 위한 움직임 Common js, AMD 을 읽고 모듈에 관한 전반적인 개요흐름을 이해하자
- 서버로 넘어가면서 실습방식으로 진행되다보니 실습하는데에 빠져있다가 끝나고나면 무엇을 했는지 휙휙 지나가버림! 꼭 다시한번 흐름을 보면서 이걸 왜 썼는지, 이 부분에서 어떤 것을 썼는지 확인해 봐야곘다