向Node模块扩展或添加功能

Nee*_*hna 8 node.js

我想为我的项目要求添加几个异步包的方法..我不想更改aync的js文件.如何扩展Node模块以添加更多功能?

当我需要('myasync')时,我想要'async'模块的所有功能以及我添加的功能.

Bre*_*dan 12

完成此操作的步骤如下:

  • 将模块的预定义功能作为您自己的变量
  • 修改,删除和/或向变量添加更多功能(通过Javascript的功能范例)
  • 将变量重新导出为您自己的变量,允许您require(作为NPM模块或文件模块).

首先,我们需要异步.

var newModule = require('async');
Run Code Online (Sandbox Code Playgroud)

现在我们已经检索了模块async,我们可以附加我们自己的函数.

newModule.betterParallel = function(myParameters) { ... };
Run Code Online (Sandbox Code Playgroud)

我们不仅可以添加自己的功能,而且甚至可以从模块中删除 - 因为它现在是我们自己的.

delete newModule['series'];
Run Code Online (Sandbox Code Playgroud)

完成后,我们需要重新导出新模块.

module.exports = newModule;
Run Code Online (Sandbox Code Playgroud)

如果要将此作为自己的模块发布到NPM,则可以使用npm publish.如果您不想,您可以简单地使用require此文件 - 现在它包含您修改后的更改.


mat*_*4pl 9

// module that you like to extend
var async = require('async')

// add a new function, myOwnFunction, to the module
async.myOwnFunction = function () {
  // do something
}

// re-export the module, for the changes to take effect
module.exports = async
Run Code Online (Sandbox Code Playgroud)

  • 您能否就这如何回答问题添加一些解释?只删除代码而不解释通常不是很有价值。 (8认同)