【问题标题】:Express: abstracting away middleware for app.useExpress:为 app.use 抽象出中间件
【发布时间】:2015-12-29 11:22:02
【问题描述】:

我想从我的 index.js 中的这段代码开始

app.use(require('sass-middleware').middleware({
  src: path.resolve(__dirname, '../'),
  dest: path.resolve(__dirname, '../public')
}));
app.use(require('browserify-dev-middleware')({
  src: path.resolve(__dirname, '../'),
  transforms: [require('jadeify')]
}));

到这里:

app.use(require('asset-pipeline-dev-middelware'));

但我只是不知道如何使传递给 app.use 的函数成为其他两个中间件函数的代理。

这样的东西填错了,还是没问题?

require('asset-pipeline-dev-middelware')(app);

【问题讨论】:

    标签: javascript node.js express middleware


    【解决方案1】:

    您可以像这样对中间件进行分组:

    //asset-pipeline-dev-middelware.js
    var middleware1 = require('first-middleware')
    var middleware2 = require('second-middleware')
    
    function(req, res, next){
        middleware1(req, res, function(err){
            if(err) return next(err);
            middleware2(req, res, next)
        })
    }
    

    然后就像你提到的那样在应用程序中使用它:

    app.use(require('asset-pipeline-dev-middelware'));
    

    【讨论】:

    • 我发现了一些有趣的事情,请参阅下面的答案
    【解决方案2】:

    这也有效,因为app.use 可以处理数组

    // asset-pipeline-dev-middelware.js
    var middleware1 = require('first-middleware')
    var middleware2 = require('second-middleware')
    
    module.export = [middleware1, middleware2];
    
    // index.js
    app.use(require('asset-pipeline-dev-middelware'));
    

    【讨论】:

    • 有趣..不知道它可以处理中间件数组。
    猜你喜欢
    • 2013-06-11
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    相关资源
    最近更新 更多