개발을 하다보면, server.js 파일에 app.get(), app.post()이런 코드가 너무 많아져서 지저분했었다.
이걸 한 파일에 길게 적어넣으면 나중에 찾아 수정하기가 어렵기 때문에 API들을 다른 파일로 쪼개놓는 것도 좋은 방법이다.
app.get('/shop/shirts', (req, resp) => {
resp.send('셔츠 파는 페이지입니다')
})
app.get('/shop/pants', (req, resp) => {
resp.send('바지 파는 페이지입니다')
})
예를 들어 두 API가 있을 때, 어떻게 따로 보관할까
먼저 API가 웹페이지로 보내는 역할을 하는 경우를 라우트라 부르기에, routes라는 폴더를 하나 만들었다.
그리고 shop.js로 작성한 코드들을 뺴주었다.
(shop.js)
const router = require('express').Router()
router.get('/shop/shirts', (req, resp) => {
resp.send('셔츠 파는 페이지입니다')
})
router.get('/shop/pants', (req, resp) => {
resp.send('바지 파는 페이지입니다')
})
module.exports = router
자바스크립트로 코드를 짤 때 다른 파일로 코드를 뺴고 싶으면 export/import moudel.export/ require문법을 사용한다.
이렇게 export한 파일을
server.js 에서 사용하고 싶을 땐
server.js
app.use('/', require('./routes/shop.js') )
미들웨어식으로 사용하면 된다.
shop.js 에서 shop이라는 공통 URL이 존재했었다.
이걸 줄이는 방법도 있는데
(shop.js)
const router = require('express').Router()
router.get('/shirts', (req, resp) => {
resp.send('셔츠 파는 페이지입니다')
})
router.get('/pants', (req, resp) => {
resp.send('바지 파는 페이지입니다')
})
module.exports = router
server.js
app.use('/shop', require('./routes/shop.js') )
이렇게 작성해두면 URL을 단축할 수 있다.
이렇게 작성해두면 app.use가 많을 때, 이건 shop과 관련된 라우트라고 구분이 쉬워지는 장점도 있다.