面向对象的代码与MVC模式 - 在初始化页面时要遵循哪些?

时间:2012-05-17 17:59:11

标签: javascript library-design

R:1

它们并非如SO Post

所述的相互排斥

这是与此更为一般SO Post

相关的具体问题

然而,控制器假设路由来自用户的所有呼叫。我这样做是通过初始化我的元素(设置addEventListener)并让它们调用模型。

例如:(来自我的控制对象)

signin_input.addEventListener( "keypress", function( event )
{ 
    if( event.keyCode === 13 )
    {
        new ModelType( 'signin' ).invoke();
        return false; 
    }

}, false );

但随着我网站的增长,我的控制器变得越来越大。

我能做的一件事就是将初始化移动到相应的模块中。例如,我的登录逻辑位于名为ModelType的对象中。初始化在对象Control中。

为了减小Control的大小,我可以将初始化移动到ModelSignIn。

或者我可以将我的Controller对象分解为多个对象 - ControlPage1,ControlPage2等。

哪种方式最好或哪种方式最好?

将初始化移动到相关对象的一个​​好处是,现在该对象是自包含的,您可以将其粘贴到其他应用程序中。缺点是,这似乎打破了MVC模式。

1 个答案:

答案 0 :(得分:1)

由于已经有好几天而没有人提供答案,我会试一试。 虽然我没有尝试过使用带有JavaScript的MVC模式,但我已经将它用于PHP,所以它也许适用于你的框架。

对于我在PHP中设计的MVC,我使用htaccess通过索引来路由所有php文件,该索引加载默认控制器(基本控制器框架),然后使用请求的文件名来查看是否有任何子控制器(可能或者不得覆盖默认的某些功能或属性。

控制器将加载默认模型和视图(以及与所请求页面相关的任何子模型/子视图)。

我用这个方法来防止主控制器变得混乱。也许这不是一个真正的MVC模式,但它在过去5年左右的时间里一直很好。

enter image description here