requireに引数を渡す(モジュールをロードするとき) 質問する

requireに引数を渡す(モジュールをロードするとき) 質問する

require を使用してモジュールをロードするときに引数を渡すことは可能ですか?

ログイン機能を提供するモジュール login.js があります。このモジュールにはデータベース接続が必要で、すべてのモジュールで同じデータベース接続を使用するようにしたいと考えています。ここで、データベース接続を指定できる関数 login.setDatabase(...) をエクスポートすると、問題なく動作します。ただし、モジュールをロードするときに、データベースやその他の要件を渡す方がよいでしょう。

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

私は NodeJS についてはまだあまり詳しくなく、通常は Java と Spring Framework を使用して開発しているので、そうです...これはコンストラクター インジェクションです :) 上記で提供したコードのようなものを実行することは可能ですか?

ベストアンサー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;
};

私はほぼすべてのモジュールをそのように構成しています。うまく機能しているようです。

おすすめ記事