본문 바로가기

개발몰입과정 개념스터디/1차

Node.js의 framework

1. Express.js

  • 신속한 서버 측 프로그래밍 패키지⇒ 웹 어플리케이션 서버를 빠르게 구현하기에 최적화
  • 많은 node.js 기능이 포함되어 있어서 몇줄의 코드로 속도를 높인다.
  • 고성능
  • 비동기 프로그래밍으로 여러 작업을 독립적으로 실행
  • 많은 HTTP도우미
  • 프로그램을 더 이해하기 쉽고 재사용 가능하게 만듦
  • 더 나은 콘텐츠 협상
  • URL에 HTTP헤더를 제공해 서버와 클라이언트간 더 나은 소통을 도움.
  • MVC 아키텍쳐 패턴 ( Model-View-Controller )
  • 구조에 대한 자유도 높음

사용해야 하는 이유

  • API생성을 위한 기반을 쉽게 사용할 수 있어 빠른 개발이 가능
  • 강력한 라우팅, 템플릿, 보안 기능, 및 오류 처리 조항

 

2. Koa

  • 스택같은 방법으로 HTTP 미들웨어를 효율적으로 처리할 수 있다.

미들웨어 : 클라이언트에게 요청이 오고 그 요청을 보내기 위해 응답하려는 중간(미들)에 목적에 맞게 처리를 하는, 말하자면 거쳐가는 함수들

  • 노드 결함을 좋은 방향으로 정규화함
  • 다양한 이미지 형식, 페이지 번역 등 다양한 형식의 콘텐츠를 동일한 url로 유지
  • 더 적은 복잡성과 자유성으로 express를 사용 가능

특징

  • express경량버전
  • 예외적으로 오류 처리
  • 노드 불일치를 깔끔하게 정상화하고 코드 유지 관리에 도움
  • 캐시 정리, 프록시 및 콘텐츠 협상 지원

사용해야 하는 이유

  • 고성능 프로젝트
  • but 초보자에게 어려울 수 있음

 

3. Nest.js

  • 타입스크립트 지원
  • controller, service, module 클래스들은 각각 역할을 가지고 있다. middleware, guard, filter 등의 클래스들 또한 다 그들의 역할을 가지고 있다. IoC와 DI 같은 디자인 패턴들을 도입해서 그것들에 맞추지 않으면 개발하기 힘든 구조
  • 따라서 통일성이 높음
  • 객체 지향과 기능적 반응 프로그래밍(FRP)의 최고의 조합
  • 모듈(비슷한 기능 및 개념들을 한 곳에 담아 캡슐화) 클래스 지원

사용해야 하는 이유

  • 타입스크립트 사용
  • 깨끗하고 모듈화되도록 유지

But,

  • 문서가 충분하지 않음.
  • 대규모 조직의 지원이 부족.

 

4. Sails.js

  • Ruby on Rails와 같은 프레임워크의 실시간 MVC 아키텍처 패턴과 유사
  • but, 최신의 데이터 중심 스타일의 웹 앱 및 api개발을 지원한다는 점이 다름.
  • 데이터 지향 개발지원
  • 경량 프레임워크는 HTTP 요청에는 Express를 사용하고 WebSocket에는 Socket.io를 사용
  • 모든 DB와 호환되며 JS 프레임워크 통합에 유연

특징

  • REST API 자동 생성
  • 재사용 가능한 보안 정책
  • 프론트엔드 불가지론
  • DB 프레임워크 호환성을 위한 ORM
  • ORM(Object-relational mapping): 객체 지향 언어에서 사용할 수 있는 "가상" 객체 데이터베이스를 구축하는 방법

사용해야 하는 이유

  • 맞춤형 채팅 애플리케이션
  • Socket.io와 뛰어난 호환성을 제공하므로 게임 및 소셜 미디어 앱에 적합

 


[참고]

https://www.simform.com/best-nodejs-frameworks/#Express

https://www.uplers.com/blog/top-10-nodejs-frameworks-front-end-development/

https://dora-guide.com/nodejs-net-framework/

node.js 미들웨어 : https://psyhm.tistory.com/8

ORM : https://ko.wikipedia.org/wiki/객체_관계_매핑

'개발몰입과정 개념스터디 > 1차' 카테고리의 다른 글

REST API란?  (0) 2022.02.04
프레임워크 vs 라이브러리  (0) 2022.02.04
정적 타입 언어 vs 동적 타입 언어  (0) 2022.02.04
NPM과 Yarn  (0) 2022.02.04
Node.js란?  (0) 2022.02.04