自定义现有模块

13 浏览
0 Comments

自定义现有模块

我有一组辅助函数,我想将它们与已有的实用模块合并在一起。

大致如下:

var customUtil = require('customUtilites');
customUtil.anotherCustomFunction = function() { ... };
exports = customUtil;

是否有办法实现这个目标?

0
0 Comments

问题出现的原因是因为开发者想要在现有的模块中进行自定义修改,但是直接修改原始模块可能会破坏依赖于它的其他部分。解决方法是将原始模块复制到一个新的对象中,并在该对象上进行修改。

具体的代码如下:

// customUtilities.js
module.exports = {
  name: 'Custom'
};
// helperA.js
module.exports = function() {
  console.log('A');
};
// helperB.js
module.exports = function() {
  console.log('B');
};
// bundledUtilities.js
var customUtilities = require('./customUtilities');
customUtilities.helperA = require('./helperA');
customUtilities.helperB = require('./helperB');
module.exports = customUtilities;
// main.js
var utilities = require('./bundledUtilities');
utilities.helperA();

运行 `node main.js` 后,将会输出 `A`。

其中,开发者在评论中提到之前尝试过使用 `exports = {...}` 进行导出,但是返回了空结果,而使用 `module.exports = {...}` 则能正常工作。有其他用户提供了一个链接,解释了 `exports` 和 `module.exports` 的区别,开发者感谢了这个链接,并表示自己现在满意了。

,要对现有的模块进行自定义修改,应该避免直接修改原始模块,而是将其复制到一个新的对象中进行修改。这样可以避免破坏依赖关系,并且能够达到预期的效果。

0