자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[Koa] 1장 Koa란?

728x90

✅ 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

 

728x90
LIST