面向Ajax的JavaScript的MVC替代方案

时间:2012-07-03 21:54:00

标签: javascript model-view-controller design-patterns

因为Ajax是异步的,所以会导致逻辑划分。这是我的控制器模块。 所有对服务器的数据请求都会在此处返回并返回此处。

function cType( type ) {
    var object_pipe = MType[ type ].pre();
    if ( object_pipe !== 'complete' ) {
        var string_pipe = JSON.stringify( object_pipe );
        cMachine( 'pipe=' + string_pipe , function( text ) { // cMachine is an ajax Call - here is the asynch call back
            MType[ type ].post( text ); 
        } );
    }
}

我在下面创建了模块结构,以便将由ajax的异步性质分割的“空间”现在组合回一个对象文字。 pre()在ajax调用之前引用,post()在ajax调用之后引用。

/**
 **  MABAdder
 */
MType.MABAdder =
{
    pre : function() { // some logic and view elements called here
    },
    post : function( string_pipe ) { // some logic and view elements called here
    }
};

这种结构运行良好,但现在我从模型中调用了视图,这在技术上打破了MVC模式。

然而,代码整洁有序,并且可以很好地扩展。

这是否破坏了强健代码的任何核心原则?

对我而言,创建一个与ajax的异步性质一致的模式更有意义,然后遵守严格的MVC模式。

这是一个可接受的框架种子吗?

1 个答案:

答案 0 :(得分:0)

  

这个结构运行良好,但现在我从模型中调用视图,这在技术上打破了MVC模式。

     

然而,代码整洁有序,并且可以很好地扩展。

     

这是否破坏了强健代码的任何核心原则?

如果您的Model对象要求您的View对象正常运行,请单击是。

从上面的例子中,我不确定你认为模型和视图是什么?

模型是对象的集合/域。它们是完全独立的,具有完整的数据和行为。

View是另一个对象域,同样完全是自包含的。 View域的一个示例是一个网页,其中包含类< button>的对象。 <形式> <表> < DIV>等

异步应该对MVC没有影响。