作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个正在使用解析(解析功能)的模块,其他模块应该查询这个解析器值。我的问题是
这是从解析器返回两个对象的示例代码,但我认为这不是正确的方法,因为我可能需要提供额外的属性
这是模块解析
parse = function (data) {
var ymlObj = ymlParser.parse(data);
return {
web: ymlObj.process_types.web,
con: ymlObj.con
}
};
最佳答案
如果我没理解错的话,你可以用 getter 和 setter 制作简单的模块。
(解析.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();
(解析用户.js)
var parse = require('./parse.js');
function ParseUser() { }
ParseUser.prototype.useParse = function () {
console.log(parse.getCon());
}
module.exports = new ParseUser();
(应用程序.js)
var parse = require('./parse.js');
var parseUser = require('parseUser.js');
parse.setData({ ... });
parseUser.useParse();
您仍然需要做处理异常等基础知识,但希望这能帮助您理解基本结构。
init 的作用实际上取决于您何时要初始化(获取?)您的数据以及该数据从何而来。您可以设置时间戳以指示您的数据有多旧,并决定您是否仍然依赖它或获取更新的数据。或者您可以从您的用户模块注册回调,以便在每次获取新数据时对其进行处理。
因此,如何设计模块取决于您。 ;)
关于javascript - 如何在 Node 模块中公开对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32165019/
我是一名优秀的程序员,十分优秀!