0

私はnode.jsプログラミングが初めてです。既存の node.js アプリケーション (Haraka SMTP サーバー) の 1 つの関数の動作を変更する必要があります。

これを行うためのベストプラクティスは何ですか? プラグインを使用する必要がありますか、または node.js アプリで特定の JS 関数をオーバーロードする別の方法がありますか? これは可能ですか?

4

1 に答える 1

1

ノードのrequireキャッシュ ロードされたオブジェクト。したがって、オブジェクトの関数をオーバーライドし、何かを実行し、元の関数を呼び出して、後で何かを実行できます。

var fs = require('fs');

var origRenameSync = fs.renameSync;
fs.renameSync = function(oldPath, newPath) {
    newPath += ".renamed";
    origRenameSync.call(this, oldPath, newPath);
    // do more here
};

これは悪い例です。この方法でコア ライブラリを変更しないでください。すべての副作用を予測することはできません。

ただし、自分が何をしているのかを知っていれば、既存のライブラリを内部的に変更せずに採用できます。関数を装飾するための非常に柔軟な方法です。

于 2013-04-24T14:13:09.943 に答える