如何清除中间件加载以进行动态路由加载?

时间:2018-06-27 20:38:38

标签: javascript node.js express routes middleware

我不知道是否可能,但是根据条件,我需要在中间件中动态加载路由文件。

在这里,我们有在第一个请求中表现出色的代码,但是似乎在下一个请求中,他进入了有条件但不使用正确文件的正确位置,似乎他在使用缓存文件或先前请求的内容。

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()
})

我如何使它起作用?

1 个答案:

答案 0 :(得分:0)

调用app.use时,传递给它的中间件将为此路径注册,随后的请求将由该路径处理。

处理您正在做的事情的一种方法是定义一个中间件,该中间件根据需要有条件地委派给您的Web或移动中间件。

示例代码:

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);
    }
})