<Express.js> Router

김민석·2021년 1월 4일
0

YouTube clone

목록 보기
8/54

Router란?

Router는 많은 routes의 복잡함을 나누어주는데 목적이 있습니다. 대부분의 웹사이트를 보면 홈, 개인 사용자를 위한 메뉴, 비밀번호도 변경 페이지 등 많은 페이지로 이루어져있습니다. 많은 routes 들을 어떤 기준을 가지고 나누어주는게 router의 역할입니다. 특정 페이지에 접속했을 때 페이지에 맞는 함수로 연결해주는 걸 routing이라고 하구요.

Express모듈은 Router 기능을 제공하는데요. 이 기능을 사용하지 않고 기존에는app.get만을 이용해서 사용자가 홈이나 user 페이지에 접속했을때 실행할 함수를 지정해줬었죠. 이렇게 하나씩 추가하다보면 점점 많아져 매우 복잡해집니다. 이런 복잡성을 router로 줄여보겠습니다.

project

youtube
 -|index.js
 +|app.js
 +|init.js
 +|router.js

router.js

import express from 'express';

export const userRouter = express.Router();
userRouter.get('/', handleUser);
userRouter.get('/password', handlePassword);
userRouter.get('/profile', handleProfile);

app.js

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;

init.js

import app from './app';

const PORT = 4000;

app.listen(PORT, () => {
  console.log(`listening on: http://localhost:${PORT}`);
});

자 그럼 이제 서버를 실행시켜보겠습니다.

  • /user로 접속하면 어떤 함수가 실행될까요?
    handleUser가 실행됩니다.
  • /user/password로 접속하면 어떤 함수가 실행될까요?
    handlePassword가 실행됩니다.

routes 관리 복잡성이 줄어든게 느껴지시나요?

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

0개의 댓글