node.js - Express:如何将变量传递给挂载的中间件

标签 node.js design-patterns express

我刚刚开始使用 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
}

谢谢,

最佳答案

我在这里看到两个选项:

  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. 您可以将 blog express 应用包装在另一个接受配置参数的函数中(很像 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;
}

关于node.js - Express:如何将变量传递给挂载的中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14596467/

相关文章:

java - 带有装饰器模式的 MVC

node.js - 将对象映射到 Mongoose 模型

javascript - Websockets ws - Node 和 Express - 导出 API

ios - 从 Node.js (Express) 服务器发送字符串到 iOS Swift 3

javascript - 套接字或 Ajax。我应该使用什么?

node.js - 如何计算数组mongodb查询中错误值的数量

node.js - 在Nodejs中使用q(promises)模块时,then()返回的值是多少?

node.js - 如何将 HTTP 流转换为 HTTPS?

oop - 解耦一个被大量子类使用的类

design-patterns - 多版本应用的设计模式