ExpressJS入门教程:05.express中路由模块的提取



起步

路由这个词对于我们来说并不陌生,前端路由后端路由不是一回事,我们这里主要来说说后端路由。

分清楚两个概念

后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源;

前端路由:前端路由主要借助hash(#)来实现,对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,这就称之为前端路由。

通过前面的学习我们可以利用express来判断不同的请求路径,响应不同的资源给到客户端,但是一旦我们要处理的请求路径比较多,如果都写在一个页面会使得代码冗杂,难于维护,例如:

。。。。 // 引入express,得到服务器实例app

app.get('/', (req, res) => {
  ....
})
app.get('/post', (req, res) => {
  ....
})
app.get('/login', (req, res) => {
  ....
})
app.get('/edit', (req, res) => {
  ....
})
... // 后面省略更多的请求路径配置

这就很明显的看到一旦我们要处理的请求路径比较多时,这时候就必须把这些路径配置代码放到单一的文件中进行管理,我们把这个单一文件称之为路由模块,在express中进行路由模板的提取也是我们必须掌握的技能。

实现方法

  1. 在入口模块app.js的同级目录下创建路由模块router.js,把之前app.js中路由设计都放到router.js文件中。

app.js文件代码:

var express = require('express')
var app = express()
app.listen(3000, () => {
  console.log('running...')
})

router.js文件中代码:

app.get('/', (req, res) => {
  ....
})
app.get('/post', (req, res) => {
  ....
})
app.get('/login', (req, res) => {
  ....
})
app.get('/edit', (req, res) => {
  ....
})
  1. router.js文件中引入express,通过express内置API,得到router路由容器,然后把每个路由都挂载到router路由容器中,最后通过module.exports导出router

router.js文件添加如下代码;

let express = require('express')
let router = express.Router()
... // 每个路由配置代码
module.exports = router
  1. app.js文件中引入router.js文件,并且通过app.use(router),把router路由容器配置到app服务中。

app.js文件添加以下代码:

let router = require('./router')
app.use(router) // 把路由容器挂载到app上
  1. Node启动入口模块app.js,项目运行成功。

node演示

通过学习把路由设计提取到单一模块中,使得我们每个模块的职能变得单一和清晰化,便于我们提高开发效率和后期代码维护。

如果需要整个demo的源码,可以在Node学习demo案例文件夹下查找。


上一篇: 04.express中art-template的使用 下一篇: 06.express重写用户评论社区案例