두 route 들을 다른 파일에서 관리하려고 한다.
routes 라는 폴더를 만들고 shop.js 라는 파일을 만들어줬다.
아래와 같이 작성한다.
기존에 app 으로 사용했던걸 router 로만 바꾸어주면된다.
module.exports 란?
module.exports = 변수명;
이런식으로 쓰면 다른 곳에서 쓸 수 있게 저 변수를 내보내준다.
그리고 require('./파일경로'); 이런식으로 쓰면 다른 파일을 불러올 수 있다.
여기서 불러온 파일이 내보내는 변수가 있을 것이다. 그걸 가져다 쓸 수 있다.
import 나 export 문법으로 대체 가능하다.
그러면 기존에 server.js 에 있던 route 대신에 아래와 같이 적어줄 수 있다
app.use() 는 미들웨어를 사용하고 싶을 때 쓰는 함수이다.
요청과 응답 사이에 실행되는 코드가 미들웨어이다.
app.use() 를 사용해서 전역 미들웨어 형식으로 라우터를 넣어주면 라우터를 적용할 수 있다.
다만 지금은 app.use('/') 이런식으로 경로를 넣어줬는데
이 경로로 요청이 들어올 때 실행할 미들웨어 < 이렇게 조건을 걸어줄 수 있다.
/shop/shirts
/shop/pants
경로면 굳이 저렇게 작성할 필요 없이 /shop 이라는 공통 경로를 빼줘도 될 것 같다.
아래와 같이 수정한다.
기존보다 url 이 단축되었다.
만약에 /shop 과 관련된 route 에 미들웨어를 적용하고 싶으면 위와같이 한다.
전에 만들어둿던 loggedin 이라는 함수가 있다.
이걸 가져와서 각 route 들에 적용해봤다.
만약에 route 가 수백개라면 일일이 적용하긴 힘들것이다.
이럴땐 router.use(함수); 처럼 적어주면 밑에 나온 모든 route 들에 미들웨어를 적용할 수 있다.
router.use('/shirts', 함수);
이런식으로 작성하면 /shirts 라는 경로로 접속할 때만 함수(미들웨어)를 적용할 수 있다.