模块路由分离

当我使用http://tes.com/routes时 ,它将路由到api => get('/'),而不是web => get('/')。 为什么?

app.js:

var api = require('./app/routes/routes').api; var transaction_web = require('./app/routes/routes').web; app.use('/api/routes', transaction_api); app.use('/routes', transaction_web); 

routes.js:

 var api = (function () { router.get('/', function (req, res, next) { ... }); return router; })(); var web = (function () { router.get('/', function (req, res, next) { ... }); return router; })(); module.exports = { api: api, web: web }; 

原因是因为这是您添加路线的顺序。

这个:

 var api = (function () { router.get('/', function (req, res, next) { ... }); return router; })(); 

是相同的:

 router.get('/', function (req, res, next) { ... }); var api = router; 

同样的事情发生在你分配web的其他块,所以你最终:

 router.get('/', function (req, res, next) { // api route }); var api = router; router.get('/', function (req, res, next) { // web route }); var web = router; 

解决scheme是创build单独的路由器实例。 例如:

 var api = new express.Router(); api.get('/', function (req, res, next) { // web route }); var web = new express.Router(); web.get('/', function (req, res, next) { // web route });