模块导出和方法调用

时间:2014-05-07 01:00:06

标签: node.js

尝试使用nodejs开发模块。我的代码是这样的:

var fs = require('fs');

module.exports.method1 = function () {
   // Some stuff
}

module.exports.method2 = function ()
{
   // Some stuff
 }

我想做点什么:

module.exports.method2 = function (url, dir, name)
{
   this.method1();
 }

怎么做?

2 个答案:

答案 0 :(得分:2)

var fs = require('fs');

exports.method1 = function () {
   // Some stuff
}

exports.method2 = function ()
{
   exports.method1();
 }

答案 1 :(得分:0)

为了让它变得有点笨拙,你可以做类似的事情:

module.exports = {
    function1: function(){
        //some stuff
    },

    function2: function(){
        this.function1();
    }
};

如果你想要私人范围:

module.exports = function(){
    var myPrivateVar = 'foo';

    var publicObject = {
        function1: function(){
            //some stuff
            console.log(myPrivateVar);
        },

        function2: function(){
            this.function1();
        }
    };

    return publicObject;
}

不同之处在于,您需要在前者只是对象引用的地方调用它。第二个例子更像是构造函数... require + invoke ... var myMod = myModule(); myMod.function2()将输出'foo'

恕我直言,这是一种更加面向对象的方式,而不是导出每个单独的功能。这样可以实现更好的分离和更清晰的代码。