node.js에서 백엔드 프로그래밍을 하여 서버를 구축할 때 편리한 기능을 사용하기 위해 프레임워크를 사용합니다.
그 중에 본인은 express와 koa를 둘 다 사용해보고 사용 경험을 적어보려합니다.
결론적으로는 저는 express의 사용 경험이 더 좋았습니다.
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
try {
const result = await doSomethingAsync();
ctx.body = result;
} catch (err) {
ctx.throw(500, err);
}
await next();
});
app.listen(3000);
function myMiddleware(req, res, next) {
return new Promise((resolve, reject) => {
// 비동기 작업 수행
doSomethingAsync()
.then(result => {
res.send(result);
resolve();
})
.catch(err => {
reject(err);
});
});
}
...
...
app.get('/', async (req, res, next) => {
try {
await myMiddleware(req, res, next);
} catch (err) {
next(err);
}
});
app.get('/', async (req, res, next) => {
try {
await myMiddleware(req, res, next);
} catch (err) {
next(err);
}
});
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
try {
const result = await doSomethingAsync();
ctx.body = result;
} catch (err) {
ctx.throw(500, err);
}
await next();
});
app.listen(3000);
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.post('/users', (req, res) => {
// 새로운 사용자 추가
res.send('User created!');
});
app.put('/users/:id', (req, res) => {
const userId = req.params.id;
// 사용자 정보 수정
res.send(`User ${userId} updated!`);
});
app.delete('/users/:id', (req, res) => {
const userId = req.params.id;
// 사용자 정보 삭제
res.send(`User ${userId} deleted!`);
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
const Koa = require('koa');
const Router = require('@koa/router');
const app = new Koa();
const router = new Router();
router.get('/', (ctx) => {
ctx.body = 'Hello World!';
});
router.post('/users', (ctx) => {
// 새로운 사용자 추가
ctx.body = 'User created!';
});
router.put('/users/:id', (ctx) => {
const userId = ctx.params.id;
// 사용자 정보 수정
ctx.body = `User ${userId} updated!`;
});
router.delete('/users/:id', (ctx) => {
const userId = ctx.params.id;
// 사용자 정보 삭제
ctx.body = `User ${userId} deleted!`;
});
app.use(router.routes());
app.use(router.allowedMethods());
app.listen(3000, () => {
console.log('Server started on port 3000');
});
koa의 가장 큰 장점은 미들웨어의 콜백함수들에 대하여 따로 프로미스 반환함수를 구현하지 않고 async/await를 사용할 수 있기 때문에 편하다는 것입니다.
express 기본적으로 내장되어있는 미들웨어가 많습니다. 이에 반해 koa의 경우에는 라우터,템플릿 등과 같은 기능을 별도로 라이브러리를 설치하여 사용하거나 필요한 기능이 있다면 개발자가 별도로 구현하여 사용해야합니다.
따라서 개인적으로는 개발시 koa보다는 express를 선호하게 되었습니다. express가 사용자가 더 많으며 관련 정보량이 더 많아 구글링하여 정보를 찾기가 더 쉽다는 장점이 있었고 koa는 라우팅이나 템플릿 등을 사용할 때 별도로 설치하고 필요에 따라 내가 직접 구현해야했지만 필요에 따른 기능이 express에서 대부분 구현되있어 가져다 쓰기만 되기 때문에 express가 더 좋았던 것 같습니다.