JavaScript&TypeScript

TypeScript 프레임워크 비교

hjkang

종류

  1. Express
  2. Fastify
  3. Nest
  4. Koa
  5. LoopBack

Express

  • 프레임워크 중 점유율 1위
  • 대규모 커뮤니티, 많은 문서
  • MVC 패턴 지원
  • 소규모 개발에 적합
  • 내부적으로 발생하는 비동기 관련 오류를 잡아내지 못해 try/catch문 사용 필요
  • 내장되어있는 모듈, 미들웨어가 많고 외부 모듈 붙이기 힘듦
  • express-validator로 간편하게 유효성 검사
  • unit test는 jest, mock… 필요
  • 주간 다운로드 수 - 13,895,038
  • 샘플: GitHub - hjkang1217/express: express framework

 

Nest

  • Spring Framework와 유사
  • cli를 사용하면 초기 프로젝트 구성 쉬움
  • typescript 지원, javascript도 가능
  • OOP(Object Oriented Programming), FP(Functional Programming), FRP(Functional Reactive Programming) 지원
  • Express나 Fastify를 추상화해서 사용하기 때문에 Express나 Fastify의 API 직접 사용 가능
  • 내장된 validation, testing(기본 jest) 도구 사용
  • ORM의 경우 @nestjs/typeorm, @nestjs/sequelize … 지원
  • API 문서화(Swagger) 간단
  • 공식 문서 친절한 편 / 한글 번역본 존재(https://docs.nestjs.kr/ )
  • 주간 다운로드 수 - 621,100
  • 샘플: GitHub - hjkang1217/nest: nest framework

 

Koa

  • Express의 다음 버전으로 Express를 만든 팀원 몇 명이 2016년에 만듦
  • Express보다 모듈화되어 있어 원하는대로 미들웨어 붙이기 좋음
  • 번들로 제공되는 미들웨어가 없어서 작고 가벼움
  • 기본적인 구조만 가지고 있고, 기능은 모듈화 되어있어서 필요한 부분만 가져다 사용 가능
  • es6 기반이라 async/await 지원해서 try-catch 에러 처리가 필요 없음
  • 타입스크립트/라우터/validate는 플러그인 필요
  • 주간 다운로드 수 - 709,749
  • 샘플: GitHub - hjkang1217/koa: koa framework

 

Fastify

  • 가볍고 빠름
  • 점유율 낮고 정보 적음
  • async/await 대응
  • Json Schema로 validation
  • typescript 및 javascript 지원
  • test는 공식문서에서 tap 사용
  • 주간 다운로드 수 - 205,862
  • 샘플: GitHub - hjkang1217/fastify: fastify framework

 

Loopback

  • REST API의 대표 프레임워크(GraphQL도 지원)
  • MSA에 적합
  • 확장성이 뛰어남
  • API를 쉽고 빠르게 작성 가능
  • 사용자 인증 및 권한 작성에 적합
  • 내부 ORM, typeORM 제공
  • test는 mocha를 기본으로 사용
  • cli로 쉽게 파일(controller, datasource, repository 등) 생성 가능
  • 문서 적어서 공식 문서 위주로 봐야 함
  • 주간 다운로드 수 - 40,727
  • 샘플: GitHub - hjkang1217/loopback: loopback framework

 

 


참고