我刚刚开始使用Expressjs,我想知道如何将变量传递给已挂载的中间件/子应用程序.在以下示例中,我希望将配置对象传递给my / 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 }
谢谢,
解决方法
我在这里看到两个选项:
>由于您的博客应用程序是一个快速应用程序,您可以使用app.set和app.get.例如.
blog = require('./blog/index'); blog.set('var1',value1); blog.set('var2',value2); ... app.use('/blog',blog);
在blog / index.js中使用app.get(‘var1’)来获取var1的值.
>您可以将blog express应用程序包装在另一个接受配置参数的函数中(很像静态中间件接受目录名称)并返回已配置的应用程序.如果你想要一个例子,请告诉我.
编辑:第二个选项的示例
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; }