<Express.js> Router-2

김민석·2021년 1월 4일
1

YouTube clone

목록 보기
9/54

Router를 MVC pattern을 적용해서 분리해봅시다.

MVC pattern

Model

Model은 data를 의미합니다. database에서의 Model입니다.

View

View는 data가 어떻게 생겼는지를 의미합니다. template을 의미합니다.

Controller

Controller는 data를 보여주는 함수입니다.

Router 분리

project

youtube
 -|router.js
   +|routers
     +|globalRouter.js
     +|userRouter.js
     +|videoRouter.js
 *|app.js

globalRouter.js

globalRouter는 로그인, 회원가입 등을 포함합니다.

import express from 'express';

const globalRouter = express.Router();

export default globalRouter;

userRouter.js

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;

videoRouter.js

video와 관련된 router입니다. 비디오 수정, 비디오 업로드 등이 해당합니다.

import express from 'express';

const videoRouter = express.Router();
videoRouter.get('/detail', handleDetail);
videoRouter.get('/edit', handleDetail);

export default videoRouter;

app.js

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를 모아서 쉽게 관리하는 방법을 다음 포스팅에서 알아봅니다.

profile
누구나 실수 할 수 있다고 생각합니다. 다만 저는 같은 실수를 반복하는 사람이 되고 싶지 않습니다. 같은 실수를 반복하지 않기 위해 기록하여 기억합니다.🙃

0개의 댓글