【问题标题】:Initialize a module when it's required在需要时初始化模块
【发布时间】:2014-11-06 10:56:29
【问题描述】:

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

 // 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 引用正常工作?

【问题讨论】:

    标签: node.js module


    【解决方案1】:

    您可以返回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'
    

    【讨论】:

    • 构造函数示例不起作用。消费者方面你应该使用new
    • 如何使用import 格式来代替?
    猜你喜欢
    • 2017-12-30
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2018-02-13
    相关资源
    最近更新 更多