在 Node.js 中表示状态的普遍接受模式是什么?
What's the commonly accepted pattern for representing state in Node.js
例如,在经典的面向对象编程中,我可能有一个班级学校,它有一个代表学生的字符串数组(不是理想的数据结构,但仅用于说明目的(。 它可能看起来像这样
class School {
String name;
String[] students;
}
然后,我可以实例化一堆不同的学校,每所学校都有不同的名称和不同的学生。 这个概念如何转化为 Node.js? 如果我有一个 School 模块,那么整个应用程序之间共享单个实例。我最初的想法是将每所学校表示为 JSON 对象,并基本上传递 JSON,而我通常会传递 School 的实例。 这是正确的想法吗,是否有其他方法?
如果状态应该对外部隐藏(即受保护的属性(,你可以这样做:
SchoolFactory = {
create: function(name, students) {
students = students || [];
// return the accessor methods
return {
getName: function() {
return name;
},
addStudent: function(student) {
students.push(student);
}
// add more methods if you need to
}
}
}
var school = SchoolFactory.create('Hogwarts');
console.log(school); // will not display the name or students
school.addStudent('Harry');
构造函数和实例:
function School(name, students) {
this.name = name;
this.students = students || [];
};
School.prototype.enroll = function (student) {
if (!~this.students.indexOf(student)) {
this.students.push(student);
} else {
throw new Error("Student '" + student + "' already enrolled in " + this.name);
}
};
var s = new School("Lakewood");
console.log(s.name);
console.log(s.students);
s.enroll("Me");
console.log(s.students);
我不了解任何模式...但是,如果您喜欢这些模块...可以声明学校模块,并在导出中具有学校类。单个实例不会被共享,因为您将实例化类
相关文章:
- 不确定我在PHP AJAX中使用的是什么开发模式
- 将JavaScript检测与MVC4显示模式集成的最佳方式是什么
- 在Backbone.js'上设置属性的模式是什么;模型和视图
- 使用 ES6 模块而不是显示模块模式的额外优势是什么?
- 在 Node.js 中表示状态的普遍接受模式是什么?
- 在vimperator中手动切换到“提示”模式的命令是什么
- 从嵌套数组中获取唯一元素的 JS 模式是什么
- 创建新模型的正确控制器/视图模式是什么
- 在javascript中拆分字符串的正确模式是什么,只留下a-z个单词
- 最好的1-1聊天模式是什么?(AJAX/CI/JQ)
- 使用生成器和迭代器管理流的正确模式是什么
- 文本的正确模式是什么
- 在这个Backbone TodoMVC示例中,这些模式是什么?
- 双64位最小值的位模式是什么?
- 在jquery插件中添加简单的公共方法的最佳模式是什么?
- 在JS模块之间进行数据封送的好模式是什么?
- 开发服务器端node.js的良好架构/模式是什么?
- 这个javascript语法/模式是什么意思
- 执行一段时间后重复的函数的良好模式是什么
- 在JavaScript中,这种情况下的首选模式是什么?