2022-01-30 TIL

Fact

  • 학습웹 프론트 질문, 모달, 로그인, 회원가입 페이지를 만들었다.
  • Node.js를 사용하기 위해 필요한 공부를 했다.

Findings

Node.js란?

Node.js는 Chrome V8 javaScript 엔진으로 빌드된 javaScript 런타임입니다. Node.js는 이벤트 기반, 논 블로킹 I/O모델을 사용해 가볍고 효율적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈소스 라이브러리이기도합니다. Node는 서버가 아니다. HTTP 서버를 직접 작성해야 합니다. Node.js는 그저 코드를 실행할 수 있는 하나의 방법에 불과한 JavaScript 런타임입니다.

Node.js 특징

  • 비동기 I/O 처리 / 이벤트위주: Node.js 라이브러리의 모든 API는 비동기식입니다. 멈추지 않습니다(Non-blocking). Node.js 기반 서버는 API가 실행되었을 떄, 데이터를 반환할때까지 기다리지 않고 다음 API를 실행합니다. 그리고 이전에 실행했던 API가 결과값을 반환할 시, Node.js의 이벤트 알림 메커니즘을 통해 결과값을 받아옵니다.
  • 빠른 속도: 구금 크롬 V8 자바스크립트 엔진을 사용하여 빠른 코드 실행을 제공합니다.
  • 단일 쓰레드/뛰어난 확장성: Node.js는 이벤트 루프와 함께 단일 쓰레드 모델을 사용합니다. 이벤트 메커니즘은 서버가 멈추지 않고 반응하도록 해주어 서버의 확장성을 키워줍니다. 반면, 일반적인 웹서버는 (Apache) 요청을 처리하기 위하여 제한된 쓰레드를 생성합니다. Node.js는 쓰레드를 한개만 사용하고 Apache같은 웹서버보다 훨씬 많은 요청을 처리할 수 있습니다.
  • 노버퍼링: Node.js 어플리케이션엔 데이터 버퍼링이 없고, 데이터를 chunk로 출력합니다.

Express란?

Express란 Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크

Express는 Node.js의 핵심 모듈인 http와 Connect 컴포넌트를 기반으로 하는 웹 프레임워크다. 그러한 컴포넌트를 미들웨어라고 하며, 설정보다는 관례와 같은 프레임워크의 철학을 지탱하는 주춧돌에 해당한다. 즉, 개발자들은 특정 프로젝트에 필요한 라이브러리를 어떤 것이든 자유롭게 선택할 수 있으며, 이는 개발자들에게 유연함과 수준높은 맞춤식 구성을 보장한다.
  1. 어플리케이션(app)

    • 익스프레스 인스턴스를 어플리케이션이라고 한다.
    • 서버에 필요한 미들웨어를 어플리케이션에 추가
    • 라우팅 설정 가능
    • 서버를 요청 대기 상태로 만들기 가능
  2. 미들웨어
  3. 라우팅

    • 요청 url에 대해 적절한 핸들러 함수로 연결해 주는 기능을 라우팅이라고함
    • get(), post() 등 메소드로 구현 가능
    • 라우팅 전용 Router 클래스 사용 가능
  4. 요청 객체

    • 클라이언트 요청 정보를 담은 객체를 Request 객체라고 함
    • req.params(), req.quert, req.body() 메소드 주로사용
  5. 응답 객체

    • 클라이언트 응답 정보를 담은 객체를 Response 객체라고 함
    • res.send(), res.status(), res.json() 메소드를 주로 사용

Future Action

  • 역시 반복이 중요한 것 같다. 처음 읽을때는 막막했는데 이제와서 다시 읽으니 재미있다.