Exports (Node JS, Express, NodeMon)

0_CyberLover_0·2022년 3월 19일
0

Node.JS # 01

목록 보기
20/21

router는 url의 시작부분일 뿐이다.

그렇기 때문에 /users/edit 같은 url로 가면 express 가 url을 보고

/users로 시작하면 유저 라우터로 가는거다.

그리고 userRouter안에서 express 는 /edit를 찾는다.

이제 globalRouter에 join을 만들어 본다.

import express from "express";

const globalRouter = express.Router();

const handleHome = (req, res) => res.send("Home");

 const handleJoin = (req, res) => res.sden("Join");

globalRouter.get("/", handleHome);

globalRouter.get("/join", handleJoin);

export default globalRouter;

videoRouter에도 추가해준다.

import express from "express";

const videoRouter = express.Router();

const handleWatch = (req, res) => res.send("Watch Video");

 const handleEdit = (req, res) => res.send("Edit Video");

videoRouter.get("/watch", handleWatch);

videoRouter.get("/edit", handleEdit);

export default videoRouter;

userRouter도 추가해준다.

import express from "express";

const userRouter = express.Router();

const handleEdit = (req, res) => res.send("Edit User");

const handleDelete = (req, res) => res.send("Delete User");

userRouter.get("/edit", handleEdit);

userRouter.get("/delete", handleDelete);

export default userRouter;

현재 이 상태로는 나쁠건 없지만 나중되면 점점 코드가 많아 질것이고 로직이 점점 복잡해 진다면

어떤 값을 가져오게 하던지 dataBase 관련해서도 가져오고 하게 되고

동영상을 업데이트 하거나 html을 보내는 등등 아주 많이 늘어나게 될것이다.

그러다 보니 router와 controller를 섞어서 쓰는게 좋지 않다.



왜냐하면 controller는 함수이다. 그리고 router는 그 함수를 이용한다.

그래서 둘을 같은 곳에 두면 안된다.

그렇기에 controller 폴더를 만들어서 분리를 해준다.

globalRouter.js

import express from "express";

 import join from "../controllers/userController";

import trending from "../controllers/videoController";

const globalRouter = express.Router();

globalRouter.get("/", trending);

globalRouter.get("/join", join);

export default globalRouter;

이런식으로 globalRouter를 수정해 주고

userController.js

const join = (req, res) => res.send("Join");

export default join;

videoController.js

const trending = (req, res) => res.send("Home Page Videos");

export default trending;

전 단계에서 해보았던 export default는 한가지 밖에 적용 시키지 못한다.

그래서 할수 있는 대안은 export를 바로 대입 시켜 주는거다.

여러가지를 다 적용 시켜준다.

userController.js

export const join = (req, res) => res.send("Join");

export const edit = (req, res) => res.send("Edit User");

export const remove = (req, res) => res.send("Remove User");

videoController.js

export const trending = (req, res) => res.send("Home Page Videos");
export const watch = (req, res) => res.send("Watch");
export const edit = (req, res) => res.send("Edit");

globalRouter.js

import { join } from "../controllers/userController";

import { trending } from "../controllers/videoController";

import하는 부분도 { } 안으로 들어가게 바꿔 줘야한다.

default로 export할때랑 다른 부분이다.

주의 할점은 export const를 사용 하게 되면 실제 이름을 그대로 써야한다.

router에 존재 하지 않는 함수를 지정하게 되어서 error가 나게 된다.

왜냐하면 단 한가지만 export가 한개 아니기 때문에

명확하게 지정을 해줘야 한다.

(JavaScript에서는 변수로 쓸수 없는 단어가 몇가지 있다.

new같은 몇가지가 있다.)

profile
꿈꾸는 개발자

0개의 댓글