【问题标题】:Customizing existing Module自定义现有模块
【发布时间】:2012-02-11 15:27:37
【问题描述】:

我有一组辅助函数,我喜欢将它们与现有的实用程序模块合并在一起。

有点像这样:

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

exports = customUtil;

这可以通过某种方式实现吗?

【问题讨论】:

    标签: node.js module


    【解决方案1】:

    你完全可以这样做。

    例如

    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;
    

    ma​​in.js:

    var utilities = require('./bundledUtilities');
    utilities.helperA();
    

    运行node main.js,您将看到A 打印出来。

    【讨论】:

    • 我建议不要修改原始模块。它可以破坏依赖它的东西。相反,将其复制到一个新对象中并对其进行修改。
    • 谢谢,就像一个魅力!我总是写exports = {...} 不工作,module.exports = {...} 工作。我不知道为什么exports = {...} 返回一个空结果而module.exports = {...} 工作正常。 @DeaDEnD 我明白你的意思,就我而言,我想将此函数添加到预先存在的库中:exports.compatFileSeperator = function() { return process.platform === 'win32' ? '\\' : '/'; };,因为我目前正在 Win7 上开发,但也想部署在类似 unix 的系统上。
    • @zaphod1984 这是一个常见错误 :) 您可以查看stackoverflow.com/questions/6116960/… 了解exportsmodule.exports 之间的区别。
    • @qiao 谢谢你的链接。即使在官方文档(link 参见圆圈示例)中也使用了该样式,这有点误导。这适用于 vor 方法,但不适用于整个对象... :) 无论如何,非常感谢,我想我现在很高兴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多