传递参数要求(加载模块时)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (37)

使用require加载模块时是否可以传递参数?

我有模块,login.js提供登录功能。它需要数据库连接,并且我想要在我的所有模块中使用相同的数据库连接。现在我导出一个函数login.setDatabase(...),它可以让我指定一个数据库连接,并且工作得很好。但我宁愿在加载模块时通过数据库和其他任何要求。

var db = ...
var login = require("./login.js")(db);

我对NodeJS很新,通常使用Java和Spring框架进行开发,所以是的......这是一个构造函数注入:)是否可以执行类似上面提供的代码?

提问于
用户回答回答于

我做你想做的事情是这样的:

module.exports = function (app, db) {
    var module = {};

    module.auth = function (req, res) {
        // This will be available 'outside'.
        // Authy stuff that can be used outside...
    };

    // Other stuff...
    module.pickle = function(cucumber, herbs, vinegar) {
        // This will be available 'outside'.
        // Pickling stuff...
    };

    function jarThemPickles(pickle, jar) {
        // This will be NOT available 'outside'.
        // Pickling stuff...

        return pickleJar;
    };

    return module;
};
用户回答回答于

是。在你的login模块中,只需输出一个函数db作为它的参数。例如:

module.exports = function(db) {
  ...
};

扫码关注云+社区

领取腾讯云代金券