<목차>
1. 디렉토리 구조의 역할과 분리
2.ruter
2.2 ruter 중첩라우터
1. 디렉토리 구조의 역할과 분리
일상생활에서의 물건 분류를 해두면 편한것처럼 코드에서도 디렉토리(폴더) 별로의 역할분리가 필요하다. 오류가 터진 지점마다. 해당기능이 하는곳의 코드만 수정하면되고. 수정이나 삭제등 유지보수에도 편하다는 장점이 있습니다.
코드에서의 예시
server.js 서버에서는 서버만 담당
미들웨어폴더에서는 미들웨어역할 담당(해당은 쿠키값을 보여주는 미들웨어)
컨트롤러 폴더에서는 유저가 필요한 기능을 담은 역할
라우터는 해당 기능을 수행할 라우터만 담당
이처럼 역할별로 분리구조를 잘 해두면 유지보수에도 용의하다.
2. ruter
핸들러 함수
핸들러 함수는 이벤트가 실행되거나 요청되었을 때 실행되는 콜백함수 입니다.
핸들러함수는 지금까지 쭉 써오고 있었는데
(경로를 설정하는 함수로서 핸들러 함수라고 함)
해당 코드로 보면 list 라는 이벤트 요청이 들어왔을때만 실행이 되는 핸들러 함수 입니다.
app.get 을 사용하여 함수자체에서 라우트를 지정할 수 있지만
해당기능을 익스프레스에서 라우터라는 모듈로 쉽게 사용가능하게 해준 기능이 있습니다.
ruter
익스프레스 내에 있는 메서드로서 문법이 이상하지만 자바스크립트 내에서는 사용이 가능합니다.
(express 는 함수지만 . 표기법으로 메서드처럼 이용이 가능함)
자바스크립트에서 함수는 객체(object) 로 취급되기 때문에 프로퍼티(속성)와 메서드(함수)
Express도 express()라는 함수지만, 동시에 객체이므로 여러 개의 속성과 메서드를 가지고 있습니다.
ruter .(요청 메서드) (이벤트 경로 핸들러, (실행시킬 함수 경로))
get 요청과 post 요청에 대한 이벤트 핸들러 경로 와 함수를 불러옴
getBoardUpdate 의 함수를 보면
get 요청으로 들어온 /board/updte/:id 에 대한 이벤트 라우터 일시 실행되는함수
2.2 중첩 ruter
라우터 또한 중첩으로 사용이 가능하다. 간단한 코드로 보면
app.use로 라우터 미들웨어를 만들고 중첩라우터와 중첩라우터 2를 실행
use에 만들어놨던 핸들러가 중첩라우트로 인해console.log 가 찍히는 것을 확인할 수 있다
router/2 로 요청을 보내면 해당 중첩라우트로 인해 nestingRoute2 가 실행 됨