一尘不染

传递参数到require(在加载模块时)

node.js

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

我有提供登录功能的login.js模块。它需要数据库连接,并且我希望在所有模块中使用相同的数据库连接。现在,我导出一个函数login.setDatabase(…),该函数可让我指定数据库连接,并且工作正常。但是我宁愿在加载模块时传递数据库和其他要求。

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

我对NodeJS相当陌生,通常使用Java和Spring
Framework进行开发,所以是的……这是一个构造函数注入:)是否可以做类似我上面提供的代码的事情?


阅读 758

收藏
2020-07-07

共1个答案

一尘不染

根据您评论,我将执行以下操作:

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;
};

我几乎像这样构造了我所有的模块。似乎对我来说很好。

2020-07-07