백엔드 서버 구축을 하다 보면 많이 듣는 단어가 바로 "MVC패턴"인데요. 그렇다면 MVC 패턴이 무엇일까요?
MVC패턴은 Model-View-Controller의 약자며, 각각의 성격에 맞는 코드를 작성을 하게 됩니다. 하지만 node에는 Router라는 개념이 추가되어 있는 상태입니다. 그렇다면 node의 파일구조는 어떻게 되어있는 건지 알아봅시다.
Router에는 어떤 코드를 작성하나요?
Router에는 기본적으로 경로를 설정하고, 핸들링이라 부르는 로직까지 작성을 합니다. 이렇게 라우터에서 경로 및 로직까지 다 수행하게 되는 경우에는 단점이 존재하게 되는데요
- 프로젝트의 규모가 커질수록 코드가 복잡해집니다.
- 가독성을 떨어뜨립니다.
- 오류를 찾고 그를 해결하는 작업도 힘이 듭니다.(트러블슈팅)
즉, 유지보수 하기 어렵다는 것입니다. 그렇다면 이러한 단점을 어떻게 해결할 수 있을까요? 쉽게 생각하면 코드를 간결하고 가독성 있게 만들어 주면 되는 것인데요. 기존의 MVC 패턴을 이용하여 파일구조를 변경해 봅시다. 이 Router는 MVC 패턴에서 Controller에 포함되어 있는 건데요.
@GetMapping({"/","/index" })
public String Index() {
return "index";
}
router.get('/',(req,res)=>{
res.sendFile('index.jsp')
})
두 코드를 비교해 봅시다. spring에서 controller에 해당되는 부분과 우리가 router에 작성한 코드는 비슷하면서도 조금 차이가 존재합니다. spring에서는 Mapping이라는 것을 통해 경로를 지정을 해주는 것이고, node의 경우에는 router.get('/')을 통해서 경로를 지정해 줍니다.
그렇다면 실질적인 controller 부분은 어디일까요? sping은 mapping 아래에 있는 public String Index() 부분이 controller 역할을 하고 node는 우리가 콜백함수라고 부르는 저 (req, res)=>{}가 핸들링이라 부르는 controller 역할을 하는 장입니다. 즉, 코드를 분리를 하게 된다면 저 콜백함수를 controller로 분리를 해주고 router에는 오로지 경로만 설정을 해주는 것입니다.
controller란?
프로젝트에서 매니저 역할을 하는 파일을 말합니다. 즉, request가 오면 controller가 service에게 일을 시키고 service의 결과 값을 response로 사용자에게 전달을 해주는 것입니다.
'프로그래밍📚 > node' 카테고리의 다른 글
비밀번호를 안전하게 저장하는 암호화 (0) | 2024.01.02 |
---|---|
유효성 검사 (express-validator) (0) | 2023.12.24 |
router와 app.use() (0) | 2023.12.17 |
백엔드에서의 예외 처리 (0) | 2023.12.13 |
API 설계를 위한 팁 (0) | 2023.12.11 |