✅ 1. Koa란?
Koa는 Node.js 환경에 사용되는 웹 프레임워크 중 하나로 Express.js를 만든 팀에서 개발한 차세대 프레임워크입니다. Koa의 주요 특징으로는 다음과 같습니다.
- 미들웨어 중심 설계: Koa는 async/await 방식으로 쉽게 작성할 수 있도록 설계되어 미들웨어가 연속으로 돌아감, 요청이 들어오면 미들웨어들이 체인처럼 연결되어 순서대로 처리됨
- 초경량 코어: 기본적으로 내장된 것은 없고, HTTP 코어만 존재함 라우팅, 템플릿 정적 파일 서비스는 직접 원하는 미들웨어를 붙여서 쓰는 방식임
- 강력한 오류 처리: 미들웨어 스택 방식으로 오류처리가 탁월함, 미들웨어 스택 중간에 에러가 나도 상위 미들웨어에서 깔끔하게 잡을 수 있음
- 컨텍스트 객체 (ctx): 요청과 응답을 ctx 객체 하나로 관리해 편리
- 모듈화 & 유연성: 라우터, 에러 핸들링, 바디 파서 등 필요한 기능을 원하는 모듈로 선택해 사용
✅ 2. Koa 장단점
🍎 장점
- 코드 가독성 향상: 최신 자바스크립트 문법(ES7 async/awiat)를 완벽히 지원하기에 비동기 코드를 처리하는데 편리하고, 유지보수가 쉬움
- 높은 유연성과 확장성: 코어가 가볍고 깔끔해 딱 필요한 기능만 골라서 사용 가능
- 더 나은 오류 처리: 에러 처리와 체계적인 대응이 가능함
- Express 보다 유연: Express보다 더 유연하고 세밀한 커스터마이징 가능
🚫 단점
- 높은 학습 곡선: async/await 개념이나 미들웨어 작동 방식에 익숙하지 않을 시 어려움
- 상대적으로 적은 커뮤니티: Express에 비하면 사용하는 사람이 적음
- 내장 기능 부족: 기본적인 기능이 거의 없어 라우터, 바디, 파서 등을 직접 추가해야 하며 초보자들에게 진입장벽이 있음
✅ 3. 사용 프로젝트 및 사례
- REST API Server
- Microsoft 백엔드
- 실시간 데이터 처리 웹 서버
- Express의 단점을 보완한 프로젝트
- 기업에서 주로 성능과 코드 품질을 중요시하는 곳에서 채택
- ex. 일부 스타트업 백엔드, Node.js 기반 API 서버 등
✅ 4. 설치법
Koa를 설치하려면 그냥 Node.js만 있으면 됩니다. 아래 명령어로 koa를 설치합니다.
npm install koa && npm install koa-router # koa + koa 라우터
다음 기본 서버 예제를 작성하기 위해 index.js를 생성합니다
const Koa = require("koa");
const Router = require("koa-router");
const app = new Koa();
const router = new Router();
router.get("/", async (ctx) => {
ctx.body = "Hello, Koa!";
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000, () => {
console.log(`Server is running on http://localhost:3000`);
});
다음 명령어로 Koa를 실행합니다.
node app.js
그 다음 브라우저에서 http://localhost:3000에 접속하면 Hello, Koa!가 뜹니다
✅ 5. 실행 환경 만들기
nodemon을 사용해 Koa의 실행 환경을 만들 수 있습니다. nodemon을 설치해 자동 재시작이 가능하도록 합니다.
npm install -g nodemon
nodemon app.js
하지만 nodemon을 사용하면 새로고침을 눌러야 반영되기 때문에 실시간으로 저장 시 코드를 반영하려면 Live Reload를 적용해야 합니다. 다음 명령어로 Live Reload를 설치합니다.
npm install koa-livereload livereload --save-dev
설치가 완료되었다면 다음과 같은 파일과 폴더를 생성해줍니다.
project/
├─ app.js
└─ public/
└─ index.html
- app.js (자동 새로고침 세팅)
const Koa = require("koa");
const Router = require("koa-router");
const serve = require("koa-static");
const livereload = require("koa-livereload");
const livereloadServer = require("livereload");
const app = new Koa();
const router = new Router();
// 1. LiveReload 서버 실행 (public 디렉토리 감시)
const liveServer = livereloadServer.createServer();
liveServer.watch(__dirname + "/public");
// 2. Koa-LiveReload 미들웨어 설정
app.use(livereload());
// 3. 정적 파일 서비스 (HTML, CSS, JS 등)
app.use(serve(__dirname + "/public"));
// 4. 라우팅 설정
router.get("/api", (ctx) => {
ctx.body = { message: "API is working!" };
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000, () => {
console.log(`Server is running on http://localhost:3000`);
});
이제 다음 명령어로 서버를 실행해줍니다.
nodemon app.js
이제 public/index.html에 파일을 수정하면 저장 시 자동으로 새로고침 됩니다.
GitHub - Koras02/Koa-bloging: https://thinky.tistory.com/category/Back-End/Koa
https://thinky.tistory.com/category/Back-End/Koa. Contribute to Koras02/Koa-bloging development by creating an account on GitHub.
github.com