我有一个导出几个函数的模块。我想为该模块编写一个中间件。因此,当调用该模块的任何导出函数时,我希望中间件首先执行并决定是否应该执行预期的函数。
我正在使用 typescript 并考虑导出执行相同方法的模块,如下所示:
export {
foo: middleware
bar: middleware
baz: middleware
}
这可能不是编写中间件的正确方法。您能建议更好的方法吗?
最佳答案
最简单的方法是显式包装您的函数。在 ES6 中(应该可以直接移植到 Typescript):
export default {
foo: wrapMiddleware(fooMiddleware),
bar: wrapMiddleware(barMiddleware)
}
wrapMiddleware()
看起来像这样:
function wrapMiddleware(originalFunc) {
return function(...args) {
// Example:
if (condition) {
return originalFunc(...args)
} else {
return null
}
}
}
您也可以通过编程方式执行此操作。例如:
let exports = { foo, bar }
for (let key in exports) {
exports[key] = wrapMiddleware(exports[key])
}
关于javascript - 如何为导出多个函数的模块编写中间件逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45485506/