模块路由分离
当我使用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 });