125*_*748 9 javascript router node.js express
我可以设置两条这样的路线
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);
});
Run Code Online (Sandbox Code Playgroud)
./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;
Run Code Online (Sandbox Code Playgroud)
./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;
Run Code Online (Sandbox Code Playgroud)
为简洁起见./routes/sub2.js看起来完全相同,但其变量名为subTwo
在sub1下嵌套sub2的最短方法是什么?在index.js中,我试过了
var subOne = router.use('/sub1', require('./sub1'));
subOne.use('/sub2', require('./sub2'));
Run Code Online (Sandbox Code Playgroud)
但那根本不起作用.在index.js内
router.use('/sub1/:id/sub2', require('./sub2'));
//localhost:3000/sub1/123/sub2/456 => { "route": "sub2-base","id":"456"}
Run Code Online (Sandbox Code Playgroud)
是否有效,但如果结构变得更长,它似乎会变得冗长且难以维护.最好的方法是什么?是否有更短的方法来嵌套这些?
index.js中的代码使您很难理解您想要的内容.到目前为止,我理解你想要一条路径,/sub1/:id/sub2但更容易编写和维护,并在index.js内.
所以是的,你可以做到这一点而且非常简单.你只需要require sub1和sub2和use sub2的sub1,那么你可以安装sub1在路由器上.例如:
var sub1= require('./sub1');
var sub2 = require('./sub2');
sub1.use(sub2);
router.use('/sub1:id', sub1);
Run Code Online (Sandbox Code Playgroud)
所以你的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');
});
var sub1= require('./sub1');
var sub2 = require('./sub2');
sub1.use(sub2);
router.use('/sub1:id', sub1);
app.listen(PORT, function(){
console.log('listening on port:', PORT);
});
Run Code Online (Sandbox Code Playgroud)
这不是很难维护.如果这不是你想要的,请告诉我.
| 归档时间: |
|
| 查看次数: |
191 次 |
| 最近记录: |