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模式。
答案 0 :(得分:1)
由于已经有好几天而没有人提供答案,我会试一试。 虽然我没有尝试过使用带有JavaScript的MVC模式,但我已经将它用于PHP,所以它也许适用于你的框架。
对于我在PHP中设计的MVC,我使用htaccess通过索引来路由所有php文件,该索引加载默认控制器(基本控制器框架),然后使用请求的文件名来查看是否有任何子控制器(可能或者不得覆盖默认的某些功能或属性。
控制器将加载默认模型和视图(以及与所请求页面相关的任何子模型/子视图)。
我用这个方法来防止主控制器变得混乱。也许这不是一个真正的MVC模式,但它在过去5年左右的时间里一直很好。