Javascript 根据URL参数在app.use()中发送不同的路由器
我正在用Express编写一个程序(以帕格为模板引擎),在外部文档中使用路由器。我试图避免为每个页面创建一个单独的Javascript 根据URL参数在app.use()中发送不同的路由器,javascript,node.js,express,Javascript,Node.js,Express,我正在用Express编写一个程序(以帕格为模板引擎),在外部文档中使用路由器。我试图避免为每个页面创建一个单独的应用程序。使用(),但我不知道如何根据URL更改我使用的路由器。我可以将req.params.page存储在一个全局变量中,但这会变得非常混乱,很容易中断 理想情况下,我希望这样做——能够将信息从第一个函数传递到下一个routes[]参数 // route static urls const registerRouter = require('./routes/register')
应用程序。使用()
,但我不知道如何根据URL更改我使用的路由器。我可以将req.params.page
存储在一个全局变量中,但这会变得非常混乱,很容易中断
理想情况下,我希望这样做——能够将信息从第一个函数传递到下一个routes[]
参数
// route static urls
const registerRouter = require('./routes/register')
const indexRouter = require('./routes/index')
const loginRouter = require('./routes/login')
// (i just hardcoded this for clarity)
const routes = {register: registerRouter, index: indexRouter, login: loginRouter}
app.use('/:page', (req, res, next) => {
req.info = generatePayload(req, res, next) /* verifies the user's jwt and passes back the payload*/
req.page = req.params.page
next()
}, routes[req.page])
这是我的路由器的一个片段
const express = require('express')
const router = express.Router()
// get & render page
router.all('/', function(req, res, next) {
req.info.title = "register"
res.render('register', req.info)
})
module.exports = router
我有没有办法做到这一点,或者我有没有更好的方法来实现这一点?如果你想省去键入app.use的每一行,那么更好的方法应该是这样的
const express = require('express');
const app = express();
app.use(function(req, res, next) {
console.log('your middlewares');
next();
})
const routes = [
'' // an empty string can also serve '/' -> /routes/index.js
'register',
'login'
];
for(let i = 0; i < routes.length; i+= 1) {
app.use('/' + routes[i], require('./routes/' + routes[i]));
}
app.listen(8080, () => console.log('running'));
const express=require('express');
常量app=express();
应用程序使用(功能(请求、恢复、下一步){
console.log(“您的中间件”);
next();
})
常数路由=[
“”//空字符串也可以服务于“/”->/routes/index.js
"登记册",,
“登录”
];
对于(设i=0;iconsole.log('running');
这里有一个指向工作示例的链接-这也将使您不必手动需要路由器,即代码的第1-4行