Node 用 request 事件來處理請求響應,事件內使用分支語句處理不同路徑的請求,而 Express 封裝了這些操作,使得代碼簡潔優雅
但如果請求路徑變多,都寫在 app.js 文件里的話,就會讓這個入口文件變得臃腫且難維護
加上 Node 是模塊化編程,所以應該將這些 app.get() 和 app.post() 都抽取出來作為一個路由模塊 router.js
方式一,router.js 作為入口文件,此方式抽離了路由,但入口文件改變了,職能划分不好
方式二,將 router.js 的路由作為一個函數導出,此方式保證了 app.js 為入口文件並且抽離出了路由模塊,但這還不是最好的方式
方式三,Express 提供了一種更好的方式專門來包裝路由
這樣,職責划分清晰了,app.js入門模塊用於啟動服務,做一些服務相關配置,如配置模板引擎、body-parser解析表單post請求體、提供靜態資源服務、監聽端口啟動服務和掛載路由等工作
router.js 路由模塊只用來處理路由,根據不同的請求方法和請求路徑設置具體的請求處理函數
模塊職責要單一,一個模塊就做一件事,模塊的划分是為了增強項目代碼的可維護性,提升開發效率