Node JS

  1. Node JS
    1. 특징
    2. 동작 과정
    3. 기존 서버와의 차이점
    4. REPL
    5. Console Event
    6. Module
    7. 각종 정보 확인하기
      1. OS
      2. Process
      3. Path
    8. 디버깅
      1. 기타
    9. Express
    10. CORS
      1. 해결 방법
    11. helmet
    12. socket
    13. 보안

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를 이용하여 내부에서 에러를 해결할 수 있다.

해결 방법

  1. beta 버전에서 사용할 수 있게 이유가 처리되었다.
  2. 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
  • 이메일을 형식에 맞춰준다.

socket

보안