NodeJS 在需要时初始化模块

4jb9z9bj  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(134)

我有一个模块,里面有一些初始化代码。初始化应该在加载模块时执行。现在我是这样做的:

// in the module

 exports.init = function(config) { do it }

 // in main

 var mod = require('myModule');
 mod.init(myConfig)

这是可行的,但我想更简洁:

var mod = require('myModule').init('myConfig')

init应该返回什么才能保持mod引用正常工作?

m2xkgtsf

m2xkgtsf1#

您可以返回this,在本例中它是对exports的引用。

exports.init = function(init) {
    console.log(init);
    return this;
};

exports.myMethod = function() {
    console.log('Has access to this');
}
var mod = require('./module.js').init('test'); //Prints 'test'

mod.myMethod(); //Will print 'Has access to this.'

或者你可以使用构造函数:

module.exports = function(config) {
    this.config = config;

    this.myMethod = function() {
        console.log('Has access to this');
    };
    return this;
};
var myModule = require('./module.js')(config);

myModule.myMethod(); //Prints 'Has access to this'

相关问题