mcbjam
mcbjam

Reputation: 7454

Module exports and method call

I'm trying to developp a module with nodejs. My code is something like this :

var fs = require('fs');

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

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

I would like to do something like :

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

How to do this ?

Upvotes: 0

Views: 72

Answers (2)

shredmill
shredmill

Reputation: 283

To make it a little bit swankier you could do something like:

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

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

If you want private scope:

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

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

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

    return publicObject;
}

The difference is though that you need to invoke it where the former is just an object reference. The second example is more like a constructor function... require + invoke... var myMod = myModule(); myMod.function2() will output 'foo'

IMHO this is a more object-oriented way of doing it rather than exporting each individual function. This allows for better separation and cleaner code.

Upvotes: 0

mpm
mpm

Reputation: 20155

var fs = require('fs');

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

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

Upvotes: 2

Related Questions