用Javascript创建MVC控制器
我正在使用MVC进行我的第一个Javascript项目。然而,当涉及到如何构建控件时,我遇到了一个小障碍。以下是一个简化的示例:用Javascript创建MVC控制器,javascript,model-view-controller,Javascript,Model View Controller,我正在使用MVC进行我的第一个Javascript项目。然而,当涉及到如何构建控件时,我遇到了一个小障碍。以下是一个简化的示例: // This is the Model var Classroom = function() { this.students = Array(); }; Classroom.prototype.addStudent = function( name ) { this.students.push( name ); }; // This is
// This is the Model
var Classroom = function() {
this.students = Array();
};
Classroom.prototype.addStudent = function( name ) {
this.students.push( name );
};
// This is the Controller
var ClassroomFromCsv = function() {};
ClassroomFromCsv.prototype.make = function( csv ) {
var classroom = new Classroom();
var names = csv.split( ',' );
for( var i = 0; i < names.length; i++ ) {
classroom.addStudent( names[i] );
}
return classroom;
};
// Create instance of controller
var classroomFromCsvController = new ClassroomFromCsv();
// Using the controller
var myClassroom = classroomFromCsvController.make( 'Jim,Bob,Sam,Greg' );
//这就是模型
var=函数(){
this.students=Array();
};
教室.prototype.addStudent=函数(名称){
本。学生。推(名);
};
//这是控制器
var ClassroomFromCsv=函数(){};
ClassroomFromCsv.prototype.make=函数(csv){
var教室=新教室();
var name=csv.split(',');
对于(var i=0;i
就其本质而言,控制器似乎不适用于面向对象的方法。它不需要保存数据。它只是获取数据,对其进行操作,然后将其传递给模型或视图。实例化并拥有实例化多个对象的选项似乎很笨拙,也没有必要
- 我可以使控制器成为一个全局函数,但这在面向对象编程中是一个好的实践吗
- 我可以将控制器作为原型添加到模型中,但它不是真正的MVC,是吗
- 我可以使控制器成为一个单例对象,并对make方法进行静态调用,但我从纯粹主义者那里听到的只是关于单例的否定
谢谢看看这个哦,孩子,我不确定你是否理解MVC。这里有一篇很好的文章让你开始:)而且,单例是可怕的,不仅仅从纯粹主义的角度来看,它们是一个用于全局状态的隐式全局变量。将控制器添加到模型中并不是MVC,但同样地,在这里,您没有使用UI做任何事情,所以一开始就没有MVC。全局变量很糟糕,但与MVC架构模式无关。我的建议是学习可靠和良好的编码实践,少担心特定的架构模式。。。谢谢并不是我所期望的那样。我试图遵循可靠的编码实践,这就是为什么我发现自己在尝试这种模式。考虑到这只是一个简化的例子,在其中我省略了任何UI。。。但我承认我是MVC新手,我很高兴得到建设性的反馈。那么你会怎么做?你认为我缺少什么概念?