我可以这样设置两个路由:
index.js
为了简洁起见,./routes/sub2.js看起来和sub1.js一样,但它的变量名为subTwo。
如何最短地将sub2嵌套在sub1中?在index.js中,我尝试过…
但那根本没有起作用。在 index.js 中。
var express = require('express');
var app = express();
var router = express.Router();
const PORT = 3001;
app.get('/', function(req, res){
res.send('hello app');
});
app.use('/routes', require('./routes'));
app.listen(PORT, function(){
console.log('listening on port:', PORT);
});
./routes/index.js
var express = require('express');
var app = express();
var router = express.Router();
router.use('/sub1', require('./sub1'));
router.use('/sub2', require('./sub2'));
module.exports = router;
./routes/sub1.js
var express = require('express');
var app = express();
var subOneRouter = express.Router();
subOneRouter.get('/', function(req, res){
res.json({route: 'sub1-base'});
});
subOneRouter.get('/:id', function(req, res){
res.json({'route': 'sub1-base', 'id': req.params.id});
});
module.exports = subOneRouter;
为了简洁起见,./routes/sub2.js看起来和sub1.js一样,但它的变量名为subTwo。
如何最短地将sub2嵌套在sub1中?在index.js中,我尝试过…
var subOne = router.use('/sub1', require('./sub1'));
subOne.use('/sub2', require('./sub2'));
但那根本没有起作用。在 index.js 中。
router.use('/sub1/:id/sub2', require('./sub2'));
//localhost:3000/sub1/123/sub2/456 => { "route": "sub2-base","id":"456"}
虽然这种方式可以工作,但如果结构变得更长,代码可能会变得冗长且难以维护。有没有更短的嵌套方式来实现同样的效果呢?
subOneRouter.get('/:id/sub2', require('./sub2.js');
,URL 应该是 localhost:3000/routes/sub1/123/sub2。 - Molda