Javascript node.js中的重写方法
我正在寻找重写自定义模块node.js中的方法的最佳方法 我正在开发一个自定义中间件,它将帮助我自动加载一些自定义模块。比如安全,用户等等 但是如果我需要自定义安全手动检查,我希望能够覆盖一些方法。 目前,我找到的唯一方法是导出一个函数,该函数将替换我的方法并公开上下文变量Javascript node.js中的重写方法,javascript,node.js,overriding,Javascript,Node.js,Overriding,我正在寻找重写自定义模块node.js中的方法的最佳方法 我正在开发一个自定义中间件,它将帮助我自动加载一些自定义模块。比如安全,用户等等 但是如果我需要自定义安全手动检查,我希望能够覆盖一些方法。 目前,我找到的唯一方法是导出一个函数,该函数将替换我的方法并公开上下文变量 //自定义模块示例 // ======================================== var myVar=“你好”; var myVar2=“!”; var方法=函数(){ 返回“世界”+myVar2;
//自定义模块示例
// ========================================
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();
工作很好。您甚至可以只导入一个,在导出时删除一些内容,并使用新模块而不是旧模块。非常感谢。这正是我想要的:)