我是 node.js 编程的新手。我需要更改现有 node.js 应用程序(Haraka SMTP 服务器)中一项功能的行为。
这样做的最佳做法是什么?我应该使用插件还是有其他方法可以在 node.js 应用程序中重载一个特定的 JS 函数?这甚至可能吗?
我是 node.js 编程的新手。我需要更改现有 node.js 应用程序(Haraka SMTP 服务器)中一项功能的行为。
这样做的最佳做法是什么?我应该使用插件还是有其他方法可以在 node.js 应用程序中重载一个特定的 JS 函数?这甚至可能吗?
节点require
缓存加载的对象。因此,您可以覆盖对象的函数,做一些事情,调用原始函数,然后再做一些事情。
var fs = require('fs');
var origRenameSync = fs.renameSync;
fs.renameSync = function(oldPath, newPath) {
newPath += ".renamed";
origRenameSync.call(this, oldPath, newPath);
// do more here
};
这是一个糟糕的例子,你永远不应该以这种方式更改核心库。您无法预见所有副作用。
但是,如果您知道自己在做什么,则可以采用现有的库而无需在内部更改它们。这是一种非常灵活的装饰函数的方式。