user4261401
user4261401

Reputation:

How to expose object in node module

I've a module which is using parsing ( a parsing functionality), other modules should query this parser values. my question is

  1. how should I build it (design aspects ) ?
  2. which method should init the parser (the first method that call it to get specific value)

This is sample code which return two object from the parser but I dont think that this is the right way to do that since maybe I'll need to provide additional properties

the is the module parse

 parse = function (data) {
        var ymlObj = ymlParser.parse(data);
        return {
            web: ymlObj.process_types.web,
            con: ymlObj.con    

        }

};

Upvotes: 1

Views: 494

Answers (1)

sharko
sharko

Reputation: 402

If I understood you right you can just make simple module with getters and setter.

(parse.js)

var ymlObj = {};

function Parse() {}

Parse.prototype.setData = function (data) {
    ymlObj = data;
}

Parse.prototype.getWeb = function () {
    return ymlObj.process_types.web;
}

Parse.prototype.getCon = function () {
    return ymlObj.con;
}

module.exports = new Parse();

(parseUser.js)

var parse = require('./parse.js');

function ParseUser() { }

ParseUser.prototype.useParse = function () {
    console.log(parse.getCon());
}

module.exports = new ParseUser();

(app.js)

var parse = require('./parse.js');
var parseUser = require('parseUser.js');

parse.setData({ ... });
parseUser.useParse();

You still have to do basics like handle exceptions but hope this helps you understand the basic structure.

What comes to init it really depends when you want to initialize (fetch?) your data and where does that data come from. You can set timestamp to indicate how old your data is and make decision if you still rely on it or fetch newer data. Or you can register callbacks from your user modules to deal with new data every time its fetched.

So its up to you how you design your module. ;)

Upvotes: 2

Related Questions