Express中一个非常核心的概念就是中间件(middleware)。在官方文档中,有这样一句话:
An Express application is essentially a series of middleware calls.
也就是说,一个Express应用,从本质上来说,就是一系列中间件的调用。那么,中间件到底是什么呢?其实,一个中间件,就是一个函数。通常情况下,一个中间件函数的形式如下:
function middlewareName(req, res, next) {
// do something
}
如果是错误处理的中间件,形式如下:
function middlewareName(err, req, res, next) {
// do something
An Express application is essentially a series of middleware calls.
也就是说,一个Express应用,从本质上来说,就是一系列中间件的调用。那么,中间件到底是什么呢?其实,一个中间件,就是一个函数。通常情况下,一个中间件函数的形式如下:
function middlewareName(req, res, next) {
// do something
}
如果是错误处理的中间件,形式如下:
function middlewareName(err, req, res, next) {
// do something
}
app.use调用的是Router的实例_router.use,即Router的原型方法,跟router.use一样
router.use需要调用app.use('/foo', router);才会生效,
所以在express项目中,想要将路由分开写,可以如下
app.js
/***********/
var app = express();
var routes = require('./routes/test');
routes(app);
总路由
/*******/
test.js
module.exports = function (app) { app.get('/', function (req, res) { res.redirect('/index'); }); app.use('/users', require('./user')); app.use('/index', require('./index')); };
首页
index.js
/*******
var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); module.exports = router;
/********/
其他路由
var express = require('express'); var router = express.Router(); /* GET users listing. */ router.get('*', function(req, res, next) { res.send('respond with a resource'); }); module.exports = router;