如何在节点模块中公开对象
How to expose object in node module
我有一个正在使用解析(解析功能)的模块,其他模块应该查询这个解析器值。
我的问题是
- 我应该如何构建它(设计方面)?
- 哪个方法应该初始化解析器(第一个调用它的方法
获取特定值)
这是 return 来自解析器的两个对象的示例代码,但我认为这不是正确的方法,因为我可能需要提供额外的属性
这是模块解析
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();
您仍然需要做处理异常等基础知识,但希望这有助于您理解基本结构。
init 的作用实际上取决于您何时要初始化(获取?)您的数据以及该数据从何而来。您可以设置时间戳以指示您的数据有多旧,并决定您是否仍然依赖它或获取更新的数据。或者你可以从你的用户模块注册回调来处理每次获取的新数据。
因此,如何设计模块取决于您。 ;)
我有一个正在使用解析(解析功能)的模块,其他模块应该查询这个解析器值。 我的问题是
- 我应该如何构建它(设计方面)?
- 哪个方法应该初始化解析器(第一个调用它的方法 获取特定值)
这是 return 来自解析器的两个对象的示例代码,但我认为这不是正确的方法,因为我可能需要提供额外的属性
这是模块解析
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();
您仍然需要做处理异常等基础知识,但希望这有助于您理解基本结构。
init 的作用实际上取决于您何时要初始化(获取?)您的数据以及该数据从何而来。您可以设置时间戳以指示您的数据有多旧,并决定您是否仍然依赖它或获取更新的数据。或者你可以从你的用户模块注册回调来处理每次获取的新数据。
因此,如何设计模块取决于您。 ;)