模块化路由

路由的概念

广义上来说,路由就是映射关系
在Express中,路由指的是客户端的请求与服务器处理函数之间的映射关系
Express中的路由分3部分组成,分别是请求的类型,请求的URL地址、处理函数,格式如下:

1
app.method(path,handler)

在Express中使用路由最简单的方式,就是把路由挂载到app上,示例如下:

1
2
3
4
5
6
7
8
9
10
11
const express = require('express');
const app = express();
app.listen(80,() => {
console.log('express server running at 127.0.0.1');
});
app.get('/',(req,res) => {
res.send('Hello world');
});
app.post('/',(req,res) => {
res.send('post request');
});

路由的模块化

为了方便对路由进行模块化的管理,Express不建议将路由直接挂载到app上,而是推荐将路由抽离为单独的模块
将路由抽离为单独模块的步骤如下:
1.创建路由模块对应的 .js 文件
2.调用 express.Router() 函数创建路由对象
3.向路由对象上挂载具体的路由
4.使用 module.exports 向外共享路由对象
5.使用 app.use() 函数注册路由模块

创建路由模块

1
2
3
4
5
6
7
8
9
10
11
12
13
// 创建路由模块
const express = require('express');
// 创建路由对象
const router = express.Router();
// 挂载路由
router.get('/user/list',(req,res) => {
res.send('Get user list')
});
router.post('/user/add',(req,res) => {
res.send('Add new user')
});
// 向外到处路由对象
module.exports = router

注册路由模块和为路由模块添加前缀

1
2
3
4
5
6
7
8
9
10
11
const express = require('express');
const app = express();
app.listen(80,() => {
console.log('http://127.0.0.1');
})
// 导入路由模块
const userRouter = require('../router/user.js');
// 使用app.use() 注册路由模块
app.use(userRouter);
// 为路由模块添加访问前缀
// app.use('/api',userRouter);