Router를 MVC pattern을 적용해서 분리해봅시다.
Model은 data를 의미합니다. database에서의 Model입니다.
View는 data가 어떻게 생겼는지를 의미합니다. template을 의미합니다.
Controller는 data를 보여주는 함수입니다.
youtube
-|router.js
+|routers
+|globalRouter.js
+|userRouter.js
+|videoRouter.js
*|app.js
globalRouter는 로그인, 회원가입 등을 포함합니다.
import express from 'express';
const globalRouter = express.Router();
export default globalRouter;
user와 관련된 router입니다. 프로필 변경, 페스워드 변경 등이 해당합니다.
import express from 'express';
const userRouter = express.Router();
userRouter.get('/', handleUser);
userRouter.get('/edit', handleEdit);
userRouter.get('/change-password', handlePassword);
export default userRouter;
video와 관련된 router입니다. 비디오 수정, 비디오 업로드 등이 해당합니다.
import express from 'express';
const videoRouter = express.Router();
videoRouter.get('/detail', handleDetail);
videoRouter.get('/edit', handleDetail);
export default videoRouter;
import globalRouter from './routers/globalRouter.js';
import userRouter from './routers/userRouter.js';
import videoRouter from './routers/videoRouter.js';
app.use('/', globalRouter);
app.use('/users', userRouter);
app.use('/videos', videoRouter);
자 이렇게 해서 router를 MVC pattern에 맞게 나누어 routers 폴더에 넣고 또 정의한 router들을 app.js에서 import해서 사용해보았습니다.
이렇게 router별로 주소를 정의하다보면 개발자 입장에서 자신이 어떤 주소에 어떤 기능을 정의했는지 파악하기가 쉽지 않을겁니다. 또 routes를 router뿐만 아니라 controller나 template에서도 사용하게 될텐데 일일이 찾아서 입력하면 에러가 발생해도 찾기가 쉽지 않습니다. 이런 문제를 해결하기 위해 routes를 모아서 쉽게 관리하는 방법을 다음 포스팅에서 알아봅니다.