Express:如何将变量传递给已挂载的中间件

Lud*_*hen 6 design-patterns node.js express

我刚刚开始使用Expressjs,我想知道如何将变量传递给已挂载的中间件/子应用程序.在以下示例中,我希望将配置对象传递给my/blog/index

在app.js

var express = require('express');
var app = express();
//...
var config = {}
//...
app.use('/blog', require('./blog/index')
Run Code Online (Sandbox Code Playgroud)

在/blog/index.js中

var express = require('express');
app = module.exports = express();

app.use(express.static(...
app.get('/', function(req, res, next) {
  //handle the req and res
}
Run Code Online (Sandbox Code Playgroud)

谢谢,

nim*_*odm 6

我在这里看到两个选项:

  1. 由于您的blog应用程序是快速应用程序,您可以使用app.setapp.get.例如

     blog = require('./blog/index');
     blog.set('var1', value1);
     blog.set('var2', value2); 
     ...
     app.use('/blog', blog);
    
    Run Code Online (Sandbox Code Playgroud)

    并在blog/index.js使用app.get('var1')中获得价值var1.

  2. 您可以将blogExpress应用程序包装在另一个接受配置参数的函数中(很像static中间件接受目录名称)并返回已配置的应用程序.如果你想要一个例子,请告诉我.

编辑:第二个选项的示例

app.js看起来像这样:

var blog = require('./blog/index');
...
var config = {};
app.use('/blog', blog(config));
Run Code Online (Sandbox Code Playgroud)

和/blog/index.js这样:

var express = require('express')

module.exports = function(config) {
    var app = express();
    // configure the app and do some other stuffs here
    // ...

    return app;
}
Run Code Online (Sandbox Code Playgroud)