Express와 Koa를 비교해보자
글 작성자: 택시 운전사
반응형
- 비교 기준
- 인기(GitHub 스타 수, npm 다운로드 수)
- 설치
- 기초 Hello World 앱
- 장점
- 단점
- 성능
- 보안
- 커뮤니티 참여
Express
Express는 최소한의 유연한 웹과 모바일 애플리케이션을 위한 탄탄한 특징들을 제공하는 Node.js 웹 애플리케이션 프레임워크로 서버와 라우트를 다루는 걸 도와주는 미들웨어처럼 작동합니다.
설치
express를 설치하기 위해서 Node.js가 설치되어있어야 합니다. 만약 express를 특정 위치에 설치하고자한다면
$ npm install express --save
잠깐 설치하고 dependencies 목록에 추가하기를 원하지 않는다면
$ npm install express --no-save
Hello World
아래는 3000번 포트를 사용하여 "Hello World"로 응답하는 express 앱을 만드는 가장 간단한 예시입니다.
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
다른 url로 간다면 서버는 404 Not Found
로 응답할 것입니다.
장점
- Node.js 웹 미들웨어의 표준입니다.
- 간단하고, 최소화되어있으며, 유연하고 스케일에 자유롭습니다.
- 빠른 앱 개발
- 전반적인 커스터마이징 가능
- 낮은 러닝 커브
- 서드 파티 서비스나 미들웨어와의 쉬운 통합
- 브라우저에 주로 집중되어있으며, 템플릿이나 렌더링 기능을 거의 즉시 사용할 수 있습니다.
단점
Express.js가 매우 편리하고 사용하기 쉬운 프레임워크이지만, 개발 과정중 적잖은 단점이 영향을 줄 것입니다.
- 코드를 유지할 때 문제가 발생하지 않으려면 구조가 매우 명확해야할 필요가 있습니다.
- 코드 사이즈가 증가할 수록, 리팩토링이 매우 어렵습니다.
- 모든 엔드 포인트를 생성해야하기 때문에, 많은 노가다가 필요하다.
성능
Express는 익숙한 Node.js의 특징을 숨기지 않고 기초적인 웹 애플리케이션 기능의 얆은 레이어를 제공합니다.
보안
Node.js의 취약성이 곧 Express의 취약점이 됨, 따라서 Node.js의 취약성을 예의주시하고 있어야하고, Node.js 최신 안정 버전으로 지속적으로 업데이트 해야 합니다.
Koa
- Express를 만든 팀이 2016년도에 만듦
- 내장 미들웨어가 번들되어있지 않는 등 기본으로 설계된 뼈대가 적지만 탄탄함(경량화)
- 미들웨어를 붙이는 등 커스터마이징이 자유로움
- 태생이 ES6 기반이기 때문에 async/await을 지원해서 try-catch 에러 처리가 필요없음
- 콜백 지옥 탈출 가능 (개발자 경험)
보안
보안을 위한 다양한 미들웨어나 헤더가 준비되어있음
성능
- Express(38510 req/sec) < Koa(50933 req/sec)
코드 비교
Setup
-
Express
const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000; const server = app.listen(PORT, () => { console.log(`Express is listening to <http://localhost>:${PORT}`); });
-
Koa
const koa = require('koa'); const app = koa(); const PORT = process.env.PORT || 3000; const server = app.listen(PORT, () => { console.log(`Koa is listening to <http://localhost>:${PORT}`); });
Middleware
-
Express
app.use((req, res, next) => { console.log(`Time : ${Date.now()}`); next(); });
-
Koa
app.use(async (ctx, next) => { console.log(`Time: ${Date.now()}`); await next(); });
참고자료
-
Choosing the right Node.js Framework: Express, Koa, or Hapi?
반응형
'Web' 카테고리의 다른 글
티스토리 블로그에 TOC 추가하기 (4) | 2021.09.30 |
---|---|
URI와 URL (0) | 2021.09.29 |
네비게이션 영역 GNB, LNB, SNB, FNB에 대해 알아보자 (0) | 2021.09.09 |
내가 쓰고 싶은 데이터 오픈 API에서 찾아보자! (1) | 2020.02.16 |
국내 프로그래밍 관련 유튜브 추천 (0) | 2018.12.20 |
댓글
이 글 공유하기
다른 글
-
URI와 URL
URI와 URL
2021.09.29 -
네비게이션 영역 GNB, LNB, SNB, FNB에 대해 알아보자
네비게이션 영역 GNB, LNB, SNB, FNB에 대해 알아보자
2021.09.09 -
내가 쓰고 싶은 데이터 오픈 API에서 찾아보자!
내가 쓰고 싶은 데이터 오픈 API에서 찾아보자!
2020.02.16 -
국내 프로그래밍 관련 유튜브 추천
국내 프로그래밍 관련 유튜브 추천
2018.12.20