你可以从不同的模块多次“使用”中间件吗?

时间:2016-11-18 18:58:37

标签: node.js express

我有一个实现服务的模块正在使用一些需要进行某些处理的中间件,例如。

dataHost

如果我有另一个需要使用相同中间件的模块,它将进行相同的调用。每个模块都是一个插件,并不知道其他任何模块,并且为插件可能使用的每个中间件创建一个全局变量似乎不是一个好的设计。根据这个question的答案,检查中间件是否已经加载似乎不是一件简单的事情。

目前,在多个地方都没有使用任何中间件,但如果将来确实如此,这是否会导致问题?如果是这样,解决方案是什么?

1 个答案:

答案 0 :(得分:1)

如果您需要为特定的路由器/路由使用特定的中间件,请仅将其包含在那些路由器/路由中,而不是应用程序范围内。

所以不要这样:

app.use(middleware);

您可以使用:

let router = express.Router();

router.use(middleware);
router.get('/', ...);

// and return/export the router

使用routers也可以让您的应用更加模块化。