Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 面向对象代码与MVC模式-初始化页面时应遵循哪种模式?_Javascript_Library Design - Fatal编程技术网

Javascript 面向对象代码与MVC模式-初始化页面时应遵循哪种模式?

Javascript 面向对象代码与MVC模式-初始化页面时应遵循哪种模式?,javascript,library-design,Javascript,Library Design,R: 如本协议所述,它们不是相互排斥的 这是一个与此相关的具体问题,更具一般性 但是,假定控制器路由来自用户的所有呼叫。我通过初始化元素(设置addEventListener)并让它们调用模型来实现这一点 例如:(来自我的控件对象) 但随着我的网站的发展,我的控制器越来越大 我可以做的一件事是将初始化移到它各自的模块中。例如,我的登录逻辑位于名为ModelType的对象中。初始化在对象控件中 为了减小控件的大小,我可以将初始化移到ModelSignIn中 或者我可以将控制器对象分解为多个对象—C

R:

如本协议所述,它们不是相互排斥的

这是一个与此相关的具体问题,更具一般性

但是,假定控制器路由来自用户的所有呼叫。我通过初始化元素(设置addEventListener)并让它们调用模型来实现这一点

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

但随着我的网站的发展,我的控制器越来越大

我可以做的一件事是将初始化移到它各自的模块中。例如,我的登录逻辑位于名为ModelType的对象中。初始化在对象控件中

为了减小控件的大小,我可以将初始化移到ModelSignIn中

或者我可以将控制器对象分解为多个对象—ControlPage1、ControlPage2等

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


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

因为已经好几天了,没有其他人给出答案,我将尝试一下。 虽然我没有尝试将MVC模式与JavaScript结合使用,但我已经将其用于PHP,因此它可能也适用于您的框架

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

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

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


因为已经好几天了,没有其他人给出答案,所以我要试一试。 虽然我没有尝试将MVC模式与JavaScript结合使用,但我已经将其用于PHP,因此它可能也适用于您的框架

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

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

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

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

}, false );