Exports (Node JS, Express, NodeMon)
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같은 몇가지가 있다.)
Author And Source
이 문제에 관하여(Exports (Node JS, Express, NodeMon)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@0_cyberlover_0/Exports-Node-JS-Express-NodeMon저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)