Node.js는 비동기 이벤트 기반으로 높은 성능을 제공하는 JavaScript 런타임입니다. Koa는 Express의 개발진들이 만든 차세대 Node.js 프레임워크로, 미들웨어 구성 방식을 단순화하고 코드 가독성이 뛰어납니다. 여기에서는 Koa를 사용해 간단한 웹 서버를 만드는 방법을 예시와 함께 자세히 설명하겠습니다.
1. **Koa 설치 및 기본 설정**
Koa를 사용하기 위해서는 먼저 Node.js와 npm(Node Package Manager)이 설치되어 있어야 합니다. 이후에 Koa를 설치하고 기본 서버를 설정하는 방법은 다음과 같습니다.
```bash
mkdir koa-server
cd koa-server
npm init -y
npm install koa
```
```javascript
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello, Koa!';
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
```
위 코드는 Koa 서버를 로컬의 3000번 포트에서 실행하고, 기본 응답으로 "Hello, Koa!"를 제공합니다.
2. **미들웨어 사용하기**
Koa의 강력한 기능 중 하나는 미들웨어 기능입니다. 각 요청에 여러 개의 미들웨어를 적용하여 필요한 처리를 수행할 수 있습니다.
```javascript
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
console.log('Request Start');
await next(); // 다음 미들웨어로 제어를 넘깁니다.
console.log('Request End');
});
app.use(async ctx => {
ctx.body = 'Hello with Middleware!';
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
```
위 코드에서 첫 번째 미들웨어는 요청이 시작될 때와 종료될 때 각각 로그를 출력합니다. `await next()`를 호출하여 다음 미들웨어가 실행될 수 있게 합니다.
3. **라우팅을 효율적으로 처리하기**
Koa 공식적으로 라우팅 모듈을 포함하지 않지만, `koa-router`라는 추가 패키지를 이용해 쉽게 라우팅을 처리할 수 있습니다.
```bash
npm install @koa/router
```
```javascript
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.get('/about', (ctx) => {
ctx.body = 'This is the About page';
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
```
`koa-router`를 사용하여 라우트를 정의할 수 있으며, 각 경로에 대한 처리를 분리하여 코드를 깔끔하게 유지할 수 있습니다.
이와 같이 Koa를 사용하면 간단하면서도 강력한 웹 서버를 구축할 수 있습니다. 미들웨어를 활용하여 필요한 기능을 유연하게 추가하고, `koa-router`로 라우팅을 체계적으로 관리할 수 있어 대규모 웹 애플리케이션 개발에 유리합니다.