Javascript node.js中的重写方法

Javascript node.js中的重写方法,javascript,node.js,overriding,Javascript,Node.js,Overriding,我正在寻找重写自定义模块node.js中的方法的最佳方法 我正在开发一个自定义中间件,它将帮助我自动加载一些自定义模块。比如安全,用户等等 但是如果我需要自定义安全手动检查,我希望能够覆盖一些方法。 目前,我找到的唯一方法是导出一个函数,该函数将替换我的方法并公开上下文变量 //自定义模块示例 // ======================================== var myVar=“你好”; var myVar2=“!”; var方法=函数(){ 返回“世界”+myVar2;

我正在寻找重写自定义模块node.js中的方法的最佳方法

我正在开发一个自定义中间件,它将帮助我自动加载一些自定义模块。比如安全,用户等等

但是如果我需要自定义安全手动检查,我希望能够覆盖一些方法。 目前,我找到的唯一方法是导出一个函数,该函数将替换我的方法并公开上下文变量

//自定义模块示例
// ========================================
var myVar=“你好”;
var myVar2=“!”;
var方法=函数(){
返回“世界”+myVar2;
}
module.exports.loadModule=函数(){
log(myVar+method());
};
module.exports.overrideMethod=函数(customMethod){
方法=自定义方法;
};
module.exports.myVar2=myVar2;
我的主应用程序如下所示:

//主应用程序示例
// ========================================
var myCustomModule=require('customModule.js');
myCustomModule.overrideMethod(函数(){
返回“查看器”+myCustomModule.myVar2;
});
myCustomModule.loadModule();
你觉得怎么样?我走的好吗

谢谢你的阅读。
Tom

通常,我认为任何具有这种可变全局状态的模块都是错误的。相反,我会选择使用这些方法创建一个对象,并有一种方法来传递覆盖

// CUSTOM MODULE EXAMPLE
// ========================================

var DEFAULT_PREFIX = "Hello ";
var DEFAULT_SUFFIX = "!";


var DEFAULT_METHOD = function() {
  return "world" + DEFAULT_SUFFIX;
};

module.exports = function(options){
    var method = options.method || DEFAULT_METHOD

    return {
        loadModule: function(){
            console.log(myVar + method());
        }
    };
};

module.exports.DEFAULT_SUFFIX = DEFAULT_SUFFIX;
然后你可以这样使用它:

// MAIN APP EXAMPLE
// ========================================

var myCustomModule = require('customModule.js');

var loader = myCustomModule({
    method: function() {
        return "viewer" + myCustomModule.DEFAULT_SUFFIX;
    }
});

loader.loadModule(); 

工作很好。您甚至可以只导入一个,在导出时删除一些内容,并使用新模块而不是旧模块。非常感谢。这正是我想要的:)