Koa.js
Introduction
제가 개발을 하기로 마음먹고 처음으로 프로젝트를 진행한 곳은 SOPT라는 대외활동 동아리입니다. 당시에는 express라는 노드 기반 프레임웍을 사용해서 배웠고, 이후에도 Node.js기반의 백엔드 서버 개발을 진행함에 있어서 다른 프레임웍들은 제 개발에서 배제되었습니다. 다행히도 최근에 회사에서 Koa.js기반의 백엔드를 추가개발 할 일이 생겨서 학습하게 되었습니다.
Koa.js의 간단한 설명을 보면 다음과 같습니다. (Koa.js 홈페이지 중 스크린샷)
네, express팀에서 만들었고 훨씬 경량화되었고 더 강화된 기능들을 제공한다는 건데요, koa를 시작함에 있어서 express의 구조와 유사한 부분이 많아서 뭐지...? 싶었는데 이런 이유가 있더군요.
Installation
At CMD
npm install koa
or
npm i koa
Setting
import Koa from 'koa';
import KoaRouter from 'koa-router';
import KoaBody from 'koa-body';
import KoaCors from 'koa-cors';
import KoaStatic from 'koa-static';
import KoaRange from 'koa-range';
import KoaLogger from 'koa-logger';
koa에 관련된 대부분의 모듈들을 가져온 코드입니다.
koa
koa.js를 사용 가능하도록 하는 통합 모듈.
koa-router
express의 Router를 koa식으로 구현한 모듈.
koa-body
express의 body-parser를 생각하시면 될 것 같습니다.
request의 body에 데이터를 전달할 때 body에 담아주는 역할을 합니다.
koa-cors
cors를 허용해주도록 설정하는 모듈입니다. 제 기억으로 express상에서는 따로 cors라는 모듈이 있어서 적용하는 것으로 기억했는데, koa에서는 아예 자체 모듈이 있네요.
koa-static
image등의 static한 resource들을 사용하게 해주는 모듈입니다.
koa-range
request의 파라미터에 담을 수 있는 값은 길이제한이 있는거 아시죠? 길이제한을 늘려주는 모듈입니다.
koa-logger
서버 로깅을 도와주는 모듈입니다.
Usage
/src/index.js
import Koa from 'koa';
import KoaRouter from 'koa-router';
import KoaBody from 'koa-body';
import KoaCors from 'koa-cors';
import KoaStatic from 'koa-static';
import KoaRange from 'koa-range';
import KoaLogger from 'koa-logger';
import api from './api/index.js';
import environment from '../utils/envoriment.js';
console.log(`Current enviromnet is ${process.env.NODE_ENV}`)
environment();
const app = new Koa();
const router = new KoaRouter();
const PORT_NUMBER = process.env.SERVER__PORT;
const HOST_ADDRESS = process.env.SERVER__HOST;
router.use('/api', api.routes());
app.use(KoaRange);
app.use(KoaLogger());
app.use(KoaCors());
app.use(KoaBody({ multipart: true }));
app.use(KoaStatic('public'));
app.use(router.routes()).use(router.allowedMethods());
app.listen(PORT_NUMBER, HOST_ADDRESS, () => {
console.log(`::: Server start :::\nTest server is listening to port ${PORT_NUMBER}\n`);
});
/src/api/index.js
import KoaRouter from 'koa-router';
import v1 from './v1/index.js';
const api = new KoaRouter();
api.use('/v1', v1.routes());
api.get('/check', (ctx, next) => {
ctx.status = 200;
ctx.body = {
message: 'Success',
data: undefined,
};
return;
});
export default api;
코드를 실제로 적용한다면, 위와 같이 사용하시면 됩니다. express-generator로 생성된 express 프로젝트를 사용하셨거나, 혹은 express만을 사용하여 프레임웍을 구축하셨던 분들이라면 매우 익숙한 구조일 것이라고 생각됩니다.
다만 기존에 (req, res, next) 를 콜백함수 형식으로 받았던 express와 달리, ctx라는 통합 변수 하나와 next로 받아 작업을 이어가게 되는점이 차이점입니다.
혹시나 처음이여서 해당 코드를 복사하여 사용하시려는 분들은 그대로 하시면 에러가 발생할 것입니다. 제 포스팅 중 이후에 출간할 '환경변수'부분을 참고해 주시면 잘 사용하실 수 있을 것 같습니다.
해당 방식을 사용한 코드들은 제 Github에 방문에 주시면 찾아볼 수 있으며, 댓글로도 질문하셔도 괜찮습니다.
Typescript, ES6와 Class 기반의 koa.js 프로젝트
https://github.com/HASA-06/structure-server
Author And Source
이 문제에 관하여(Koa.js), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dev__sana/koajs저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)