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 路由模块只用来处理路由,根据不同的请求方法和请求路径设置具体的请求处理函数
模块职责要单一,一个模块就做一件事,模块的划分是为了增强项目代码的可维护性,提升开发效率