Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在节点模块中公开对象_Javascript_Node.js_Module_Require - Fatal编程技术网

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

Javascript 如何在节点模块中公开对象,javascript,node.js,module,require,Javascript,Node.js,Module,Require,我有一个模块正在使用解析(解析功能),其他模块应该查询这个解析器的值。 我的问题是 我应该如何构建它(设计方面) 哪个方法应该初始化解析器(调用它的第一个方法) 获取特定值) 这是从解析器返回两个对象的示例代码,但我认为这不是正确的方法,因为可能需要提供额外的属性 这是模块解析 parse = function (data) { var ymlObj = ymlParser.parse(data); return { web: ymlOb

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

  • 我应该如何构建它(设计方面)
  • 哪个方法应该初始化解析器(调用它的第一个方法) 获取特定值)
  • 这是从解析器返回两个对象的示例代码,但我认为这不是正确的方法,因为可能需要提供额外的属性

    这是模块解析

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

    如果我没弄错的话,你可以用getter和setter创建一个简单的模块

    (parse.js)

    (parseUser.js)

    (app.js)

    您仍然需要做一些基础工作,比如处理异常,但希望这能帮助您理解基本结构

    init的作用实际上取决于何时要初始化(获取?)数据以及数据来自何处。您可以设置时间戳来指示数据的年代,并决定是否仍然依赖它或获取较新的数据。或者,您可以注册来自用户模块的回调,以便在每次获取新数据时处理新数据


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

    感谢1+一个问题:为什么要使用原型?请解释一下,这是因为在javascript中,每个声明的(新的)对象都继承自其原型。要更好地理解,请阅读以下内容:
    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();
    
    var parse = require('./parse.js');
    
    function ParseUser() { }
    
    ParseUser.prototype.useParse = function () {
        console.log(parse.getCon());
    }
    
    module.exports = new ParseUser();
    
    var parse = require('./parse.js');
    var parseUser = require('parseUser.js');
    
    parse.setData({ ... });
    parseUser.useParse();