在使用express做后台时,如果你使用app.get()或者app.post()进行路由匹配的话,你写的功能接口逻辑就全部在当前的入口app.js中了,代码特别的臃肿。Express 4.0之后,支持了Router中间件,默认就会有一个内置的属性,可以采用路由中间件,app.use()进行路由匹配,拆分成对应的模块。
比如:写一个完整的后台服务,你可以把用户模块拆分出来,单独作为一个User模块,在user模块下,你可以将功能拆分成注册(register)模块,登录(login)模块,发送验证码(sendMsg)模块。
app.use('/user',user); 其实,相当于匹配的路由为/user/*,只要是匹配到/user/*,都会走user路由。
- 入口文件
var express = require('express');
var user = require('./routes/user.js');
var app = express();
app.use('/user',user);
app.listen(8090,function () {
console.log("启动成功");
});
- 路由文件
var express = require('express');
var router = express.Router();
var login = require('../user/login.js');
var register = require('../user/register.js');
var sendMsg = require('../user/sendMsg.js');
//登录
router.use('/login',login);
//注册
router.use('/register',register);
//发送验证码
router.use('/sendMsg',sendMsg);
// router.use('/',function (req,res) {
// res.send({'code':"200"});
// });
module.exports = router;
- 功能文件
1.登录模块
var express = require('express');
var router = express.Router();
router.post('/login',function (req,res) {
res.send({'page':"login"});
res.end();
});
module.exports = router;
2.注册模块
var express = require('express');
var router = express.Router();
router.post('/register',function (req,res) {
res.send({"page":"register"});
res.end();
});
module.exports = router;
3.发送验证码
var express = require('express');
var router = express.Router();
router.post('/sendMsg',function (req,res) {
res.send({"page":"sendMsg"});
res.end();
});
module.exports = router;
在使用router 路由时,你必须要使用module.exports =router;导出来,否则,就会报错。