Node JS
Node JS
특징
Javascript 환경으로 Javascript를 사용하기 쉽다. Single Thread로 동시에 실행되는 것처럼 보여준다.
Non-Blocking I/O
동작 과정
JS는 Single Thread NodeJS API(NodeJS 런타임 환경)은 Mulit Threading 가능 CallStack에 태스크가 쌓임 -> 위에서 부터 일을 하나씩 처리함 -> BUT setTimeOUt 같은 비동기 함수가 들어오면 task queue로 callback을 보냄 -> Event Loop가 돌고있다가 callstack이 비어지면 그때 callback을 가져와 처리한다.
기존 서버와의 차이점
기존 서버: 요청이 오면 thread pool에 있는 thread가 할당되고 요청이 다 처리되면 다음 Thread가 다른 요청을 받는다. NodeJS : 하나의 thread로 요청을 받고 요청을 넘겨준다.
REPL
Read Eval Print Loop
## global
Console Event
console.log() console.warn() console.error()
assert
console.asset(1 === 2, "값이 다릅니다.")
console.time()
경로 추적 console.trace()
Module
export & import
각종 정보 확인하기
OS
Process
const process = require('process');
- nextThick
Path
__dirname 폴더 경로 __fiiename 파일 경로
path.sep 구분자 path.delimiter 구분자
디버깅
Debugger 사용
breakPoint
기타
process.argv
Express
- Node JS를 이용하여 쉽게 서버를 구성할 수 있게 만든 프레임워크이다.
https://expressjs.com/en/4x/api.html all use delete get post
### 동기
- 외부에서 에러를 처리해줄 수 있다. 비동기
- 내부적으로 오류가 나기때문에 내부에서 해결 그러므로 콜백함수 내에서 에러를 처리해야한다.
try catch를 이용하여 내부에서 에러를 해결할 수 있다.
해결 방법
- beta 버전에서 사용할 수 있게 이유가 처리되었다.
express-async-errors라이브러리로 해결 가능하다.
### app.use(express.json()); //REST API -> Body app.use(express.urlencoded({ extended: false })); //HTML Form -> Body
CORS
서버와 같은 도메인을 가지고 있다면 데이터를 바로 가져올 수 있지만 도메인이 다르다면 데이터를 가져오지 못한다.
해결 방법
방법1. header에 Access-Control-allow-Origin을 넘겨주어야 한다. 방법2. cors 라이브러리 사용.
cookie-parser
- 쿠키를 확인할 수 있다.
morgan
- 어떤 요청이 왔는지 알 수 있다.
helmet
validation
sanitization trim
- 공백을 없애준다. nomalizeEmail
- 이메일을 형식에 맞춰준다.