gpt4 book ai didi

node.js - 递归 Expressjs 路由

转载 作者:搜寻专家 更新时间:2023-11-01 00:32:16 25 4
gpt4 key购买 nike

在不求助于正则表达式的情况下,expressjs 可以递归调用路由,即 url 示例:

/f:forum/s:section/t:thread/p:post  
/f:forum/s:section/s:section/t:thread/p:post
/f:forum/s:section/s:section/s:section/t:thread/p:post
...

因此在技术上允许论坛中无限数量的“部分/子部分”。

我尝试这样做:

应用程序.js:

var express = require('express');
app = express();
app.route('/').get(function(req, res, next){
return res.send('hello');
});
app.use('/f:forum', require('./section'));
server = app.listen(process.env.http || process.env.PORT);
module.exports = app;

section.js:

var router = require('express').Router();
router = router;
router.route('/s:section').get(function(req, res, next){
return res.send(req.params);
});
router.use('/s:section', require('./thread'));
module.exports = router;

线程.js:

var router = require('express').Router();
router.use('/s:section', require('./section'));
router.route('/t:thread/p-:post').get(function(req, res, next){
return res.send(req.params);
});
router.route('/t:thread').get(function(req, res, next){
return res.send(req.params);
});
module.exports = router;

但有趣的是,它告诉我在 thread.js 中 require('./section') = {}
但在 app.js 中它是正确的...有什么建议吗?

最佳答案

您可以像 router.route('/:path*') 那样执行通配符路由,然后让处理程序从该点向下解析。

例如,像这样的东西:

router.route('/forum/:path*', function(req,res){
var requestPath = req.path; // will present the whole path to you for parsing
// do whatever db lookup logic you normally would do now that you have the pieces you wanted
res.render('forum', data);
};

关于node.js - 递归 Expressjs 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26417288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com