Router(2)개발/Node.js2024. 10. 24. 16:20
Table of Contents
1. Router 추가 생성
// globalRouter.js
import express from "express";
const globalRouter = express.Router();
const handleHome = (req, res) => res.send("Home");
const handleJoin = (req, res) => res.send("Join");
globalRouter.get("/", handleHome);
globalRouter.get("/join", handleJoin);
export default globalRouter;
// userRouter.js
import express from "express";
const userRouter = express.Router();
const handleEdit = (req, res) => res.send("Edit User");
const handleDelete = (req, res) => res.snd("Delete User");
userRouter.get("/edit", handleEdit);
userRouter.get("/delete", handleDelete);
export default userRouter;
// videoRouter.js
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;
- 각 파일마다 Router와 Controller가 2개씩 있음
- 하지만 다양한 이유로 인해 더 늘어날 수 있기 때문에 Router와 Controller는 섞어서 쓰면 안됨
- Controller는 함수고 Router는 그 함수를 이용하기 때문에 같이 있으면 안됨
- Router처럼 역시 폴더를 나누고 파일 또한 나누어 관리를 해야함
- 현재의 폴더트리
- globalController가 없는 이유
- 회원가입은 User가 하므로 userController에 들어감
- globalRouter는 단순하게 URL을 깔끔하게 쓰기 위함일 뿐
// 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;
// videoController.js
const trending = (req, res) => res.send("Homepage Videos");
export default trending;
// userController.js
const join = (req, res) => res.send("Join");
export default join;
2. Export
- 코드 순서에 따라 오류가 뜨는 videoRouter videoController 수정
- 기존의 handleWatch, handleEdit Controller를 추가하여야 하는데 export default는 1개만 사용가능
// export를 여러개 사용해야 할때
// videoController.js
export const trending = (req, res) => res.send("Homepage Videos");
export const watch = (req, res) => res.send("Watch");
export const edit = (req, res) => res.send("Edit");]
// import도 다르게 해야함
// 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;
- export를 default로 하면 내가 원하는 이름으로 import 할 수 있었음
- node.js에서 파일은 1개의 default export만 가질 수 밖에 없음
- 하지만 export const를 하면 실제 이름을 그대로 사용해야 함
https://github.com/Daniel-Jeon/wetube-loaded/commit/a98876f9aa2c6ddb43d4111b4c8373a5208b9a2f
'개발 > Node.js' 카테고리의 다른 글
Pug(1) (0) | 2024.10.28 |
---|---|
전반적인 Router 구성하기 (0) | 2024.10.25 |
Router(1) (0) | 2024.10.24 |
Error: Cannot set headers after they are sent to the client (0) | 2024.10.23 |
Middleware (0) | 2024.10.23 |