如何清除中间件加载以进行动态路由加载?
How to clear middleware loading to make dynamic route loading?
我不知道是否可行,但我需要根据条件在中间件中动态加载路由文件。
这里的代码在第一个请求中表现良好,但似乎在下一个请求中,他进入了条件的正确位置但没有使用正确的文件,似乎他使用了缓存文件或以前请求的东西...
let routesApp = require('./routes-app');
let routesWeb = require('./routes-web');
app.use((req, res, next) => {
const regex = new RegExp(pattern, 'i')
if (regex.test(req.headers['agent-type'])) {
app.use('/', routesWeb)
} else {
app.use('/', routesApp)
}
return next()
})
我如何让它工作?
当您调用 app.use
时,传递给它的中间件会为该路径注册,后续请求将由该路径处理。
处理您正在做的事情的一种方法是定义一个中间件,它根据需要有条件地委托给您的网络或移动中间件。
示例代码:
let routesApp = require('./routes-app');
let routesWeb = require('./routes-web');
app.use('/', (req, res, next) => {
const regex = new RegExp(pattern, 'i')
if (regex.test(req.headers['agent-type'])) {
routesWeb(req, res, next);
} else {
routesApp(req, res, next);
}
})
我不知道是否可行,但我需要根据条件在中间件中动态加载路由文件。
这里的代码在第一个请求中表现良好,但似乎在下一个请求中,他进入了条件的正确位置但没有使用正确的文件,似乎他使用了缓存文件或以前请求的东西...
let routesApp = require('./routes-app');
let routesWeb = require('./routes-web');
app.use((req, res, next) => {
const regex = new RegExp(pattern, 'i')
if (regex.test(req.headers['agent-type'])) {
app.use('/', routesWeb)
} else {
app.use('/', routesApp)
}
return next()
})
我如何让它工作?
当您调用 app.use
时,传递给它的中间件会为该路径注册,后续请求将由该路径处理。
处理您正在做的事情的一种方法是定义一个中间件,它根据需要有条件地委托给您的网络或移动中间件。
示例代码:
let routesApp = require('./routes-app');
let routesWeb = require('./routes-web');
app.use('/', (req, res, next) => {
const regex = new RegExp(pattern, 'i')
if (regex.test(req.headers['agent-type'])) {
routesWeb(req, res, next);
} else {
routesApp(req, res, next);
}
})