6

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

在 app.js 中

var express = require('express');
var app = express();
//...
var config = {}
//...
app.use('/blog', require('./blog/index')

在 /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
}

谢谢,

4

1 回答 1

7

我在这里看到两个选项:

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

     blog = require('./blog/index');
     blog.set('var1', value1);
     blog.set('var2', value2); 
     ...
     app.use('/blog', blog);
    

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

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

编辑:第二个选项的示例

app.js 看起来像这样:

var blog = require('./blog/index');
...
var config = {};
app.use('/blog', blog(config));

和 /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;
}
于 2013-01-30T05:20:06.500 回答