偶尔看Loopback文档,看到文档的中间件写法是: module.exports = function(options) { return function customHandler(req, res, next) { // use options to control handler’s behavior } }; 本来也没觉得什么,很正常的闭包写法么。。。 突然觉得,为啥要用闭包,我正常的函数 module.exports = function(req, res, next) { // use options to control handler’s behavior }; 也可以正常工作么,为啥文档推荐这个写法。。。。后来,很好奇,发现很多源代码都是闭包写法,其实很多地方不用闭包,用普通函数也能实现,而且不容出错。 请各位指教一下,为啥这里推荐采用这个写法,是不是我还没有对nodejs 什么地方理解不透彻。
如果你的中间件没用任何可以配置的话,那么直接返回函数就好了,loopback之所以这样做是因为基本很多中间件都会有参数配置的过程,所以为了统一中间件的使用使用了闭包
function(options) { //此处参数配置
return function(req, res, next) {
....
}
}
see http://blog.bithound.io/using-closure-to-write-express-middleware/
不用闭包,意味着只要有配置,就得使用内联方式,降低可读性的同时产生冗余代码
中间件基本都需要参数吧
@DevinXian 嗯,看了,谢谢!