用Javascript创建MVC控制器

用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

我正在使用MVC进行我的第一个Javascript项目。然而,当涉及到如何构建控件时,我遇到了一个小障碍。以下是一个简化的示例:

// 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方法进行静态调用,但我从纯粹主义者那里听到的只是关于单例的否定

Javascript中控制器的最佳/最常见实践是什么


谢谢

看看这个哦,孩子,我不确定你是否理解MVC。这里有一篇很好的文章让你开始:)而且,单例是可怕的,不仅仅从纯粹主义的角度来看,它们是一个用于全局状态的隐式全局变量。将控制器添加到模型中并不是MVC,但同样地,在这里,您没有使用UI做任何事情,所以一开始就没有MVC。全局变量很糟糕,但与MVC架构模式无关。我的建议是学习可靠和良好的编码实践,少担心特定的架构模式。。。谢谢并不是我所期望的那样。我试图遵循可靠的编码实践,这就是为什么我发现自己在尝试这种模式。考虑到这只是一个简化的例子,在其中我省略了任何UI。。。但我承认我是MVC新手,我很高兴得到建设性的反馈。那么你会怎么做?你认为我缺少什么概念?