繁体   English   中英

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

[英]How to expose object in node module

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

  1. 我应该如何构建(设计方面)?
  2. 哪个方法应该初始化解析器(第一个调用它以获取特定值的方法)

这是从解析器返回两个对象的示例代码,但我认为这不是正确的方法,因为也许我需要提供其他属性

这是模块解析

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

        }

};

如果我理解正确,则可以使用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();

您仍然必须做一些处理异常之类的基础知识,但是希望这有助于您理解基本结构。

初始化的真正内容取决于您何时初始化(获取?)数据以及数据来自何处。 您可以设置时间戳以指示您的数据有多旧,并决定是否仍然依靠它或获取新数据。 或者,您可以从用户模块中注册回调,以在每次获取新数据时处理新数据。

因此,取决于您如何设计模块。 ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM