Router는 많은 routes의 복잡함을 나누어주는데 목적이 있습니다. 대부분의 웹사이트를 보면 홈, 개인 사용자를 위한 메뉴, 비밀번호도 변경 페이지 등 많은 페이지로 이루어져있습니다. 많은 routes 들을 어떤 기준을 가지고 나누어주는게 router의 역할입니다. 특정 페이지에 접속했을 때 페이지에 맞는 함수로 연결해주는 걸 routing이라고 하구요.
Express모듈은 Router 기능을 제공하는데요. 이 기능을 사용하지 않고 기존에는app.get
만을 이용해서 사용자가 홈이나 user 페이지에 접속했을때 실행할 함수를 지정해줬었죠. 이렇게 하나씩 추가하다보면 점점 많아져 매우 복잡해집니다. 이런 복잡성을 router로 줄여보겠습니다.
youtube
-|index.js
+|app.js
+|init.js
+|router.js
import express from 'express';
export const userRouter = express.Router();
userRouter.get('/', handleUser);
userRouter.get('/password', handlePassword);
userRouter.get('/profile', handleProfile);
index.js 파일을 app.js와 init.js로 나누어 역할을 분명히 해주겠습니다. 또한 app.get대신 app.use를 사용하는데요. '/users'에 대하여 userRouter전체를 사용하겠다는 의미입니다.
import express from 'express';
import {userRouter} from './router.js';
const app = express();
/* middleware 생략*/
app.use("/users", userRouter);
export default app;
import app from './app';
const PORT = 4000;
app.listen(PORT, () => {
console.log(`listening on: http://localhost:${PORT}`);
});
자 그럼 이제 서버를 실행시켜보겠습니다.
routes 관리 복잡성이 줄어든게 느껴지시나요?