如何在节点模块中公开对象

时间:2015-08-23 09:16:20

标签: javascript node.js module require

我有一个使用解析的模块(解析功能),其他模块应查询此解析器值。 我的问题是

  1. 我应该如何构建它(设计方面)?
  2. 哪个方法应该初始化解析器(第一个调用它的方法) 获得具体价值)
  3. 这是从解析器返回两个对象的示例代码,但我不认为这是正确的方法,因为我可能需要提供其他属性

    是模块解析

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

1 个答案:

答案 0 :(得分:1)

如果我理解你的话,你可以用getter和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();

你仍然需要处理像处理异常这样的基础知识,但希望这有助于你理解基本结构。

初始化它取决于你想要初始化(获取?)你的数据以及这些数据来自何处。您可以设置时间戳以指示数据的年龄,并在您依赖它或获取更新数据时做出决定。或者,您可以从用户模块注册回调,以便在每次获取时处理新数据。

因此,您可以自己设计模块。 ;)